summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--includes/update.inc21
-rw-r--r--modules/system/system.install20
-rw-r--r--modules/system/system.queue.inc18
3 files changed, 35 insertions, 24 deletions
diff --git a/includes/update.inc b/includes/update.inc
index 816f32bd0..28b4cbb81 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 519cbabda..47ee14415 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 bac1ff26e..586681181 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() {