Skip to content

Commit 8397e72

Browse files
committed
feat: test pgrouting with orioledb-17
Test pgrouting upgrade path on orioledb-17
1 parent b4659bc commit 8397e72

File tree

4 files changed

+77
-12
lines changed

4 files changed

+77
-12
lines changed

nix/ext/pgrouting.nix

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,7 @@ let
5555
) "-Wno-error=int-conversion -Wno-error=incompatible-pointer-types";
5656

5757
cmakeFlags =
58-
[
59-
"-DPOSTGRESQL_VERSION=${postgresql.version}"
60-
]
58+
[ "-DPOSTGRESQL_VERSION=${postgresql.version}" ]
6159
++ lib.optionals (stdenv.isDarwin && lib.versionAtLeast postgresql.version "16") [
6260
"-DCMAKE_MACOSX_RPATH=ON"
6361
"-DCMAKE_SHARED_MODULE_SUFFIX=.dylib"

nix/ext/tests/pgrouting.nix

Lines changed: 64 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,15 @@ let
1111
majorVersion = lib.versions.major postgresql.version;
1212
pkg = pkgs.buildEnv {
1313
name = "postgresql-${majorVersion}-${pname}";
14-
paths = [
15-
postgresql
16-
postgresql.lib
17-
(installedExtension majorVersion)
18-
self.packages.${pkgs.system}."psql_${majorVersion}/exts/postgis"
19-
];
14+
paths =
15+
[
16+
postgresql
17+
postgresql.lib
18+
(installedExtension majorVersion)
19+
self.packages.${pkgs.system}."psql_${majorVersion}/exts/postgis"
20+
]
21+
++ lib.optional (postgresql.isOrioleDB
22+
) self.packages.${pkgs.system}."psql_orioledb-17/exts/orioledb";
2023
passthru = {
2124
inherit (postgresql) version psqlSchema;
2225
lib = pkg;
@@ -106,16 +109,62 @@ self.inputs.nixpkgs.lib.nixos.runTest {
106109
};
107110
};
108111

112+
specialisation.orioledb17.configuration = {
113+
services.postgresql = {
114+
package = lib.mkForce (postgresqlWithExtension self.packages.${pkgs.system}.postgresql_orioledb-17);
115+
settings = {
116+
shared_preload_libraries = "orioledb";
117+
default_table_access_method = "orioledb";
118+
};
119+
initdbArgs = [
120+
"--allow-group-access"
121+
"--locale-provider=icu"
122+
"--encoding=UTF-8"
123+
"--icu-locale=en_US.UTF-8"
124+
];
125+
initialScript = pkgs.writeText "init-postgres-with-orioledb" ''
126+
CREATE EXTENSION orioledb CASCADE;
127+
'';
128+
};
129+
130+
systemd.services.postgresql-migrate = {
131+
# we don't support migrating from postgresql 17 to orioledb-17 so we just reinit the datadir
132+
serviceConfig = {
133+
Type = "oneshot";
134+
RemainAfterExit = true;
135+
User = "postgres";
136+
Group = "postgres";
137+
StateDirectory = "postgresql";
138+
WorkingDirectory = "${builtins.dirOf config.services.postgresql.dataDir}";
139+
};
140+
script =
141+
let
142+
newPostgresql = postgresqlWithExtension self.packages.${pkgs.system}.postgresql_orioledb-17;
143+
in
144+
''
145+
set -x
146+
systemctl cat postgresql.service
147+
rm -rf ${builtins.dirOf config.services.postgresql.dataDir}/${newPostgresql.psqlSchema}
148+
'';
149+
};
150+
151+
systemd.services.postgresql = {
152+
after = [ "postgresql-migrate.service" ];
153+
requires = [ "postgresql-migrate.service" ];
154+
};
155+
};
109156
};
110157
testScript =
111158
{ nodes, ... }:
112159
let
113160
pg17-configuration = "${nodes.server.system.build.toplevel}/specialisation/postgresql17";
161+
orioledb17-configuration = "${nodes.server.system.build.toplevel}/specialisation/orioledb17";
114162
in
115163
''
116164
versions = {
117165
"15": [${lib.concatStringsSep ", " (map (s: ''"${s}"'') (versions "15"))}],
118166
"17": [${lib.concatStringsSep ", " (map (s: ''"${s}"'') (versions "17"))}],
167+
"orioledb-17": [${lib.concatStringsSep ", " (map (s: ''"${s}"'') (versions "orioledb-17"))}],
119168
}
120169
121170
def run_sql(query):
@@ -166,5 +215,14 @@ self.inputs.nixpkgs.lib.nixos.runTest {
166215
assert f"${pname},{latestVersion}" in installed_extensions
167216
168217
check_upgrade_path("17")
218+
219+
with subtest("switch to orioledb 17"):
220+
server.succeed(
221+
"${orioledb17-configuration}/bin/switch-to-configuration test >&2"
222+
)
223+
installed_extensions=run_sql(r"""SELECT extname FROM pg_extension WHERE extname = 'orioledb';""")
224+
assert "orioledb" in installed_extensions
225+
226+
check_upgrade_path("orioledb-17")
169227
'';
170228
}

nix/postgresql/default.nix

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ let
1010
namePrefix,
1111
jitSupport,
1212
supportedVersions,
13+
isOrioleDB,
1314
}:
1415
pkgs.lib.mapAttrs' (
1516
version: config:
@@ -18,6 +19,7 @@ let
1819
in
1920
pkgs.lib.nameValuePair "${namePrefix}${versionSuffix}" (
2021
pkgs.callPackage ./generic.nix {
22+
inherit isOrioleDB;
2123
inherit (config) version hash;
2224
jitSupport = jitSupport;
2325
self = pkgs;
@@ -30,10 +32,12 @@ let
3032
{
3133
namePrefix = "postgresql_";
3234
versions = supportedPostgresVersions.postgres;
35+
isOrioleDB = false;
3336
}
3437
{
3538
namePrefix = "postgresql_orioledb-";
3639
versions = supportedPostgresVersions.orioledb;
40+
isOrioleDB = true;
3741
}
3842
];
3943

@@ -44,7 +48,7 @@ let
4448
acc: flavor:
4549
acc
4650
// (mkPostgresqlPackages {
47-
inherit (flavor) namePrefix;
51+
inherit (flavor) namePrefix isOrioleDB;
4852
inherit jitSupport;
4953
supportedVersions = flavor.versions;
5054
})

nix/postgresql/generic.nix

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ let
6464
# detection of crypt fails when using llvm stdenv, so we add it manually
6565
# for <13 (where it got removed: https://github.com/postgres/postgres/commit/c45643d618e35ec2fe91438df15abd4f3c0d85ca)
6666
libxcrypt,
67+
68+
isOrioleDB ? false,
6769
}@args:
6870
let
6971
atLeast = lib.versionAtLeast version;
@@ -288,6 +290,7 @@ let
288290
withoutJIT = if jitSupport then jitToggle else this;
289291

290292
dlSuffix = if olderThan "16" then ".so" else stdenv.hostPlatform.extensions.sharedLibrary;
293+
inherit isOrioleDB;
291294

292295
pkgs =
293296
let
@@ -347,6 +350,7 @@ let
347350
"libpq"
348351
];
349352
platforms = platforms.unix;
353+
inherit isOrioleDB;
350354

351355
# JIT support doesn't work with cross-compilation. It is attempted to build LLVM-bytecode
352356
# (`%.bc` is the corresponding `make(1)`-rule) for each sub-directory in `backend/` for
@@ -399,8 +403,9 @@ let
399403
wrapProgram $out/bin/postgres --set NIX_PGLIBDIR $out/lib
400404
'';
401405

402-
passthru.version = postgresql.version;
403-
passthru.psqlSchema = postgresql.psqlSchema;
406+
passthru = {
407+
inherit (postgresql) version psqlSchema isOrioleDB;
408+
};
404409
};
405410
in
406411
generic

0 commit comments

Comments
 (0)