mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-07-14 14:10:33 +03:00

This avoids restarting the postgresql server, when only ensureDatabases or ensureUsers have been changed. It will also allow to properly wait for recovery to finish later. To wait for "postgresql is ready" in other services, we now provide a postgresql.target. Resolves #400018 Co-authored-by: Marcel <me@m4rc3l.de>
54 lines
1.3 KiB
Nix
54 lines
1.3 KiB
Nix
{
|
|
pkgs,
|
|
makeTest,
|
|
genTests,
|
|
}:
|
|
|
|
let
|
|
inherit (pkgs) lib;
|
|
|
|
makeTestFor =
|
|
package:
|
|
makeTest {
|
|
name = "postgresql-jit-${package.name}";
|
|
meta.maintainers = with lib.maintainers; [ ma27 ];
|
|
|
|
nodes.machine =
|
|
{ pkgs, ... }:
|
|
{
|
|
services.postgresql = {
|
|
inherit package;
|
|
enable = true;
|
|
enableJIT = true;
|
|
initialScript = pkgs.writeText "init.sql" ''
|
|
create table demo (id int);
|
|
insert into demo (id) select generate_series(1, 5);
|
|
'';
|
|
};
|
|
};
|
|
|
|
testScript = ''
|
|
machine.start()
|
|
machine.wait_for_unit("postgresql.target")
|
|
|
|
with subtest("JIT is enabled"):
|
|
machine.succeed("sudo -u postgres psql <<<'show jit;' | grep 'on'")
|
|
|
|
with subtest("Test JIT works fine"):
|
|
output = machine.succeed(
|
|
"cat ${pkgs.writeText "test.sql" ''
|
|
set jit_above_cost = 1;
|
|
EXPLAIN ANALYZE SELECT CONCAT('jit result = ', SUM(id)) FROM demo;
|
|
SELECT CONCAT('jit result = ', SUM(id)) from demo;
|
|
''} | sudo -u postgres psql"
|
|
)
|
|
assert "JIT:" in output
|
|
assert "jit result = 15" in output
|
|
|
|
machine.shutdown()
|
|
'';
|
|
};
|
|
in
|
|
genTests {
|
|
inherit makeTestFor;
|
|
}
|