Index: update.php =================================================================== RCS file: /cvs/drupal/drupal/update.php,v retrieving revision 1.247 diff -u -p -r1.247 update.php --- update.php 7 Jan 2008 19:43:28 -0000 1.247 +++ update.php 12 Jan 2008 03:19:41 -0000 @@ -158,9 +158,14 @@ function update_do_one($module, $number, if (!isset($context['results'][$module][$number])) { $context['results'][$module][$number] = array(); } - $context['results'][$module][$number] = array_merge($context['results'][$module][$number], $ret);; - - if ($context['finished'] == 1) { + $context['results'][$module][$number] = array_merge($context['results'][$module][$number], $ret); + // An update function can abort so that the schema version is not incremented, + // and also display a message. To abort, return a $ret array with an element like: + // $ret['#update_failed'] = array('success' => FALSE, 'query' => "Why I failed") + // Note that this will not prevent later updates for the same module from running + // and updating the schema version. Thus, you will need to add code to check the + // schema version in later updates and abort them, too. + if ($context['finished'] == 1 && empty($ret['#update_failed'])) { // Update the installed version drupal_set_installed_schema_version($module, $number); }