From 1f6a553cd2f8eeb531e6404d793797cb19bcfaf4 Mon Sep 17 00:00:00 2001 From: Angie Byron Date: Sat, 9 Jan 2010 02:51:09 +0000 Subject: [PATCH] #629794 follow-up by yched: Fixed batch API in update.php. --- includes/update.inc | 21 +++++++++++++++++++++ modules/system/system.install | 20 +++----------------- modules/system/system.queue.inc | 18 +++++++++++------- 3 files changed, 35 insertions(+), 24 deletions(-) diff --git a/includes/update.inc b/includes/update.inc index 816f32bd0af..28b4cbb8180 100644 --- a/includes/update.inc +++ b/includes/update.inc @@ -383,6 +383,27 @@ function update_fix_d7_requirements() { ); db_create_table('queue', $schema['queue']); + // Create the sequences table. + $schema['sequences'] = array( + 'description' => 'Stores IDs.', + 'fields' => array( + 'value' => array( + 'description' => 'The value of the sequence.', + 'type' => 'serial', + 'unsigned' => TRUE, + 'not null' => TRUE, + ), + ), + 'primary key' => array('value'), + ); + db_create_table('sequences', $schema['sequences']); + // Initialize the table with the maximum current increment of the tables + // that will rely on it for their ids. + $max_aid = db_query('SELECT MAX(aid) FROM {actions_aid}')->fetchField(); + $max_uid = db_query('SELECT MAX(uid) FROM {users}')->fetchField(); + $max_batch_id = db_query('SELECT MAX(bid) FROM {batch}')->fetchField(); + db_insert('sequences')->fields(array('value' => max($max_aid, $max_uid, $max_batch_id)))->execute(); + // Add column for locale context. if (db_table_exists('locales_source')) { db_add_field('locales_source', 'context', array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '', 'description' => 'The context this string applies to.')); diff --git a/modules/system/system.install b/modules/system/system.install index 519cbabda5b..47ee14415ac 100644 --- a/modules/system/system.install +++ b/modules/system/system.install @@ -2590,25 +2590,11 @@ function system_update_7043() { } /** - * Reuse the actions_aid table as sequences. + * Drop the actions_aid table. */ function system_update_7044() { - $schema['sequences'] = array( - 'description' => 'Stores IDs.', - 'fields' => array( - 'value' => array( - 'description' => 'The value of the sequence.', - 'type' => 'serial', - 'unsigned' => TRUE, - 'not null' => TRUE, - ), - ), - 'primary key' => array('value'), - ); - db_create_table('sequences', $schema['sequences']); - $max_aid = db_query('SELECT MAX(aid) FROM {actions_aid}')->fetchField(); - $max_uid = db_query('SELECT MAX(uid) FROM {users}')->fetchField(); - db_insert('sequences')->fields(array('value' => max($max_aid, $max_uid)))->execute(); + // The current value of the increment has been taken into account when + // creating the sequences table in update_fix_d7_requirements(). db_drop_table('actions_aid'); } diff --git a/modules/system/system.queue.inc b/modules/system/system.queue.inc index bac1ff26e6e..58668118183 100644 --- a/modules/system/system.queue.inc +++ b/modules/system/system.queue.inc @@ -179,13 +179,17 @@ class SystemQueue implements DrupalQueueInterface { } public function createItem($data) { - $record = new stdClass(); - $record->name = $this->name; - $record->data = $data; - // We cannot rely on REQUEST_TIME because many items might be created by a - // single request which takes longer than 1 second. - $record->created = time(); - return drupal_write_record('queue', $record) !== FALSE; + // During a Drupal 6.x to 7.x update, drupal_get_schema() does not contain + // the queue table yet, so we cannot rely on drupal_write_record(). + $query = db_insert('queue') + ->fields(array( + 'name' => $this->name, + 'data' => serialize($data), + // We cannot rely on REQUEST_TIME because many items might be created + // by a single request which takes longer than 1 second. + 'created' => time(), + )); + return (bool) $query->execute(); } public function numberOfItems() {