mirror of
https://code.mensbeam.com/MensBeam/Arsse.git
synced 2025-01-03 14:32:40 +00:00
Correct the state of PostgreSQL serial sequence during tests
This commit is contained in:
parent
dd4f22e04e
commit
4a2efd9987
1 changed files with 22 additions and 1 deletions
|
@ -14,6 +14,27 @@ class TestDatabase extends \JKingWeb\Arsse\TestCase\Database\Base {
|
||||||
protected static $implementation = "PDO PostgreSQL";
|
protected static $implementation = "PDO PostgreSQL";
|
||||||
|
|
||||||
protected function nextID(string $table): int {
|
protected function nextID(string $table): int {
|
||||||
return (int) static::$drv->query("SELECT cast(last_value as bigint) + 1 from pg_sequences where sequencename = '{$table}_id_seq'")->getValue();
|
return ((int) static::$drv->query("SELECT last_value from pg_sequences where sequencename = '{$table}_id_seq'")->getValue()) + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setUp() {
|
||||||
|
parent::setUp();
|
||||||
|
$seqList =
|
||||||
|
"select
|
||||||
|
replace(substring(column_default, 10), right(column_default, 12), '') as seq,
|
||||||
|
table_name as table,
|
||||||
|
column_name as col
|
||||||
|
from information_schema.columns
|
||||||
|
where table_name like 'arsse_%'
|
||||||
|
and column_default like 'nextval(%'
|
||||||
|
";
|
||||||
|
foreach(static::$drv->query($seqList) as $r) {
|
||||||
|
$num = static::$drv->query("SELECT max({$r['col']}) from {$r['table']}")->getValue();
|
||||||
|
if (!$num) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$num++;
|
||||||
|
static::$drv->exec("ALTER SEQUENCE {$r['seq']} RESTART WITH $num");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue