summaryrefslogtreecommitdiff
path: root/vendor/symfony/cache/Traits/PdoTrait.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/symfony/cache/Traits/PdoTrait.php')
-rw-r--r--vendor/symfony/cache/Traits/PdoTrait.php37
1 files changed, 23 insertions, 14 deletions
diff --git a/vendor/symfony/cache/Traits/PdoTrait.php b/vendor/symfony/cache/Traits/PdoTrait.php
index ea4feee4ac..ec34e72fb5 100644
--- a/vendor/symfony/cache/Traits/PdoTrait.php
+++ b/vendor/symfony/cache/Traits/PdoTrait.php
@@ -37,7 +37,7 @@ trait PdoTrait
private $timeCol = 'item_time';
private $username = '';
private $password = '';
- private $connectionOptions = array();
+ private $connectionOptions = [];
private $namespace;
private function init($connOrDsn, $namespace, $defaultLifetime, array $options, ?MarshallerInterface $marshaller)
@@ -90,24 +90,24 @@ trait PdoTrait
$conn = $this->getConnection();
if ($conn instanceof Connection) {
- $types = array(
+ $types = [
'mysql' => 'binary',
'sqlite' => 'text',
'pgsql' => 'string',
'oci' => 'string',
'sqlsrv' => 'string',
- );
+ ];
if (!isset($types[$this->driver])) {
throw new \DomainException(sprintf('Creating the cache table is currently not implemented for PDO driver "%s".', $this->driver));
}
$schema = new Schema();
$table = $schema->createTable($this->table);
- $table->addColumn($this->idCol, $types[$this->driver], array('length' => 255));
- $table->addColumn($this->dataCol, 'blob', array('length' => 16777215));
- $table->addColumn($this->lifetimeCol, 'integer', array('unsigned' => true, 'notnull' => false));
- $table->addColumn($this->timeCol, 'integer', array('unsigned' => true));
- $table->setPrimaryKey(array($this->idCol));
+ $table->addColumn($this->idCol, $types[$this->driver], ['length' => 255]);
+ $table->addColumn($this->dataCol, 'blob', ['length' => 16777215]);
+ $table->addColumn($this->lifetimeCol, 'integer', ['unsigned' => true, 'notnull' => false]);
+ $table->addColumn($this->timeCol, 'integer', ['unsigned' => true]);
+ $table->setPrimaryKey([$this->idCol]);
foreach ($schema->toSql($conn->getDatabasePlatform()) as $sql) {
$conn->exec($sql);
@@ -165,8 +165,11 @@ trait PdoTrait
if ('' !== $this->namespace) {
$delete->bindValue(':namespace', sprintf('%s%%', $this->namespace), \PDO::PARAM_STR);
}
-
- return $delete->execute();
+ try {
+ return $delete->execute();
+ } catch (TableNotFoundException $e) {
+ return true;
+ }
}
/**
@@ -175,7 +178,7 @@ trait PdoTrait
protected function doFetch(array $ids)
{
$now = time();
- $expired = array();
+ $expired = [];
$sql = str_pad('', (\count($ids) << 1) - 1, '?,');
$sql = "SELECT $this->idCol, CASE WHEN $this->lifetimeCol IS NULL OR $this->lifetimeCol + $this->timeCol > ? THEN $this->dataCol ELSE NULL END FROM $this->table WHERE $this->idCol IN ($sql)";
@@ -309,7 +312,7 @@ trait PdoTrait
try {
$stmt = $conn->prepare($sql);
} catch (TableNotFoundException $e) {
- if (!$conn->isTransactionActive() || \in_array($this->driver, array('pgsql', 'sqlite', 'sqlsrv'), true)) {
+ if (!$conn->isTransactionActive() || \in_array($this->driver, ['pgsql', 'sqlite', 'sqlsrv'], true)) {
$this->createTable();
}
$stmt = $conn->prepare($sql);
@@ -340,8 +343,14 @@ trait PdoTrait
}
foreach ($values as $id => $data) {
- $stmt->execute();
-
+ try {
+ $stmt->execute();
+ } catch (TableNotFoundException $e) {
+ if (!$conn->isTransactionActive() || \in_array($this->driver, ['pgsql', 'sqlite', 'sqlsrv'], true)) {
+ $this->createTable();
+ }
+ $stmt->execute();
+ }
if (null === $driver && !$stmt->rowCount()) {
try {
$insertStmt->execute();