Commit 26f30af5 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Mise à jour du corps de package : on teste au préalable que la séquence...

Mise à jour du corps de package : on teste au préalable que la séquence correspondant à la table existe bien. Evite d'avoir une mise à jour qui échoue avec l'erreur du genre "package compilé avec erreur".
parent aca5597e
......@@ -354,12 +354,37 @@ class QueryGeneratorService extends AbstractService
$tables = $this->getTables();
$result = [];
foreach ($tables as $table) {
$this->assertSequenceExists($table);
$result[$table] = $this->makeProcBody($table);
}
return $result;
}
/**
* Teste que la séquence correspondant à la table spécifiée existe bien.
*
* @param string $table
* @throws \Doctrine\DBAL\DBALException En cas d'erreur en BDD
* @throws Exception Si la séquence n'existe pas.
*
*/
protected function assertSequenceExists($table)
{
$sql = 'SELECT COUNT(*) SEQ_FOUND FROM USER_SEQUENCES WHERE SEQUENCE_NAME = :sequenceName';
$sequenceName = strtoupper($table) . '_ID_SEQ';
$stmt = $this->getEntityManager()->getConnection()->executeQuery($sql, ['sequenceName' => $sequenceName]);
$sequenceFound = false;
if ($r = $stmt->fetch()) {
$sequenceFound = (bool)(int)$r['SEQ_FOUND'];
}
if (! $sequenceFound) {
throw new Exception("La séquence '$sequenceName' doit être créée (ex: CREATE SEQUENCE $sequenceName)");
}
}
/**
......
Supports Markdown
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