Skip to content
Snippets Groups Projects
Commit 7f7f4928 authored by simon's avatar simon
Browse files

Merge branch 'imp-I-7969-share-number-cache-per-request' into '1.x'

imp: I-7969 share number cache per request

See merge request !207
parents b5ac12ed a406f8f3
Branches
1 merge request!207imp: I-7969 share number cache per request
Pipeline #7269 passed with warnings with stages
in 14 minutes and 55 seconds
......@@ -606,20 +606,24 @@ EOF
}
if (!$this->getName()) {
$sid = "share_number";
$previous_number = \Drupal::state()->get($sid);
if ($previous_number) {
$next_number = $previous_number + 1;
}
else {
$previous_data = \Drupal::state()->get($sid);
if (!is_array($previous_data) || $previous_data['ts'] != \Drupal::time()->getRequestTime()) {
$connection = \Drupal::database();
$result = $connection->query("select max(convert(coalesce(name, 0), SIGNED INTEGER)) + 1 as maxid from {share}");
$next_number = $result->fetchObject()->maxid;
if (!$next_number) {
$next_number = 1;
$result = $connection->query("select max(convert(coalesce(name, 0), SIGNED INTEGER)) as maxid from {share}");
$last_number = $result->fetchObject()->maxid;
if (!$last_number) {
$last_number = 0;
}
$previous_data = [
'ts' => \Drupal::time()->getRequestTime(),
'number' => $last_number,
];
}
$this->setName($next_number);
\Drupal::state()->set($sid, $next_number);
$previous_data['number'] += 1;
\Drupal::state()->set($sid, $previous_data);
$this->setName($previous_data['number']);
}
$transaction = $this->getIssuingTransaction();
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment