1{
2 pkgs,
3 makeTest,
4 genTests,
5}:
6
7let
8 inherit (pkgs) lib;
9
10 makeTestFor =
11 package:
12 makeTest {
13 name = "postgresql-jit-${package.name}";
14 meta.maintainers = with lib.maintainers; [ ma27 ];
15
16 nodes.machine =
17 { pkgs, ... }:
18 {
19 services.postgresql = {
20 inherit package;
21 enable = true;
22 enableJIT = true;
23 initialScript = pkgs.writeText "init.sql" ''
24 create table demo (id int);
25 insert into demo (id) select generate_series(1, 5);
26 '';
27 };
28 };
29
30 testScript = ''
31 machine.start()
32 machine.wait_for_unit("postgresql.service")
33
34 with subtest("JIT is enabled"):
35 machine.succeed("sudo -u postgres psql <<<'show jit;' | grep 'on'")
36
37 with subtest("Test JIT works fine"):
38 output = machine.succeed(
39 "cat ${pkgs.writeText "test.sql" ''
40 set jit_above_cost = 1;
41 EXPLAIN ANALYZE SELECT CONCAT('jit result = ', SUM(id)) FROM demo;
42 SELECT CONCAT('jit result = ', SUM(id)) from demo;
43 ''} | sudo -u postgres psql"
44 )
45 assert "JIT:" in output
46 assert "jit result = 15" in output
47
48 machine.shutdown()
49 '';
50 };
51in
52genTests {
53 inherit makeTestFor;
54}