Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit7679ee5

Browse files
committed
Merge branch 'develop' of github.com:supabase/postgres into INDATA-152
* 'develop' of github.com:supabase/postgres: feat: support multiple versions of the pg_stat_monitor extension (#1683) feat: support multiple versions of the pgjwt extension (#1751)
2 parents53beb0b +1e598fb commit7679ee5

File tree

6 files changed

+397
-52
lines changed

6 files changed

+397
-52
lines changed

‎ansible/vars.yml‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ postgres_major:
1010

1111
# Full version strings for each major version
1212
postgres_release:
13-
postgresorioledb-17:"17.5.1.070-orioledb-INDATA152-1"
14-
postgres17:"17.6.1.049-INDATA152-1"
15-
postgres15:"15.14.1.049-INDATA152-1"
13+
postgresorioledb-17:"17.5.1.073-orioledb-INDATA152-1"
14+
postgres17:"17.6.1.052-INDATA152-1"
15+
postgres15:"15.14.1.052-INDATA152-1"
1616

1717
# Non Postgres Extensions
1818
pgbouncer_release:1.19.0

‎nix/ext/pg_stat_monitor.nix‎

Lines changed: 89 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,36 +3,103 @@
33
stdenv,
44
fetchFromGitHub,
55
postgresql,
6+
buildEnv,
67
}:
7-
8-
stdenv.mkDerivationrec{
8+
let
99
pname="pg_stat_monitor";
10-
version="2.1.0";
1110

12-
buildInputs=[postgresql];
11+
# Load version configuration from external file
12+
allVersions=(builtins.fromJSON(builtins.readFile./versions.json)).${pname};
1313

14-
src=fetchFromGitHub{
15-
owner="percona";
16-
repo=pname;
17-
rev="refs/tags/${version}";
18-
hash="sha256-STJVvvrLVLe1JevNu6u6EftzAWv+X+J8lu66su7Or2s=";
19-
};
14+
# Filter versions compatible with current PostgreSQL version
15+
supportedVersions=lib.filterAttrs(
16+
_:value:builtins.elem(lib.versions.majorpostgresql.version)value.postgresql
17+
)allVersions;
18+
19+
# Derived version information
20+
versions=lib.naturalSort(lib.attrNamessupportedVersions);
21+
latestVersion=lib.lastversions;
22+
numberOfVersions=builtins.lengthversions;
23+
packages=builtins.attrValues(
24+
lib.mapAttrs(name:value:buildnamevalue.hashvalue.revision)supportedVersions
25+
);
26+
27+
# Build function for individual versions
28+
build=
29+
version:hash:revision:
30+
stdenv.mkDerivationrec{
31+
inheritpnameversion;
32+
33+
buildInputs=[postgresql];
34+
35+
src=fetchFromGitHub{
36+
owner="percona";
37+
repo=pname;
38+
rev="refs/tags/${revision}";
39+
inherithash;
40+
};
41+
42+
makeFlags=["USE_PGXS=1"];
43+
44+
installPhase=''
45+
mkdir -p $out/{lib,share/postgresql/extension}
46+
47+
# Install shared library with version suffix
48+
mv${pname}${postgresql.dlSuffix} $out/lib/${pname}-${version}${postgresql.dlSuffix}
49+
50+
# Create version-specific control file
51+
sed -e "/^default_version =/d" \
52+
-e "s|^module_pathname = .*|module_pathname = '\$libdir/${pname}-${version}'|" \
53+
${pname}.control > $out/share/postgresql/extension/${pname}--${version}.control
54+
55+
# For the latest version, create default control file and symlink and copy SQL upgrade scripts
56+
if [[ "${version}" == "${latestVersion}" ]]; then
57+
{
58+
echo "default_version = '${version}'"
59+
cat $out/share/postgresql/extension/${pname}--${version}.control
60+
} > $out/share/postgresql/extension/${pname}.control
61+
ln -sfn${pname}-${latestVersion}${postgresql.dlSuffix} $out/lib/${pname}${postgresql.dlSuffix}
62+
cp *.sql $out/share/postgresql/extension
63+
else
64+
mv ./pg_stat_monitor--${version}.sql.in $out/share/postgresql/extension/pg_stat_monitor--${version}.sql
65+
fi
66+
'';
67+
68+
meta=withlib;{
69+
description="Query Performance Monitoring Tool for PostgreSQL";
70+
homepage="https://github.com/percona/${pname}";
71+
license=licenses.postgresql;
72+
broken=lib.versionOlderpostgresql.version"15";
73+
inherit(postgresql.meta)platforms;
74+
};
75+
};
76+
in
77+
buildEnv{
78+
name=pname;
79+
paths=packages;
2080

21-
makeFlags=["USE_PGXS=1"];
81+
pathsToLink=[
82+
"/lib"
83+
"/share/postgresql/extension"
84+
];
2285

23-
installPhase=''
24-
mkdir -p $out/{lib,share/postgresql/extension}
86+
postBuild=''
87+
# Verify all expected library files are present
88+
expectedFiles=${toString(numberOfVersions+1)}
89+
actualFiles=$(ls -l $out/lib/${pname}*${postgresql.dlSuffix} | wc -l)
2590
26-
cp *${postgresql.dlSuffix} $out/lib
27-
cp *.sql $out/share/postgresql/extension
28-
cp *.control $out/share/postgresql/extension
91+
if [[ "$actualFiles" != "$expectedFiles" ]]; then
92+
echo "Error: Expected $expectedFiles library files, found $actualFiles"
93+
echo "Files found:"
94+
ls -la $out/lib/*${postgresql.dlSuffix} || true
95+
exit 1
96+
fi
2997
'';
3098

31-
meta=withlib;{
32-
description="Query Performance Monitoring Tool for PostgreSQL";
33-
homepage="https://github.com/percona/${pname}";
34-
platforms=postgresql.meta.platforms;
35-
license=licenses.postgresql;
36-
broken=lib.versionOlderpostgresql.version"15";
99+
passthru={
100+
inheritversionsnumberOfVersions;
101+
pname="${pname}-all";
102+
version=
103+
"multi-"+lib.concatStringsSep"-"(map(v:lib.replaceStrings["."]["-"]v)versions);
37104
};
38105
}

‎nix/ext/pgjwt.nix‎

Lines changed: 73 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,85 @@
11
{
2+
buildEnv,
23
lib,
34
stdenv,
45
fetchFromGitHub,
56
postgresql,
67
unstableGitUpdater,
78
}:
8-
9-
stdenv.mkDerivationrec{
9+
let
1010
pname="pgjwt";
11-
version="9742dab1b2f297ad3811120db7b21451bca2d3c9";
11+
allVersions=(builtins.fromJSON(builtins.readFile./versions.json)).${pname};
12+
supportedVersions=lib.filterAttrs(
13+
_:value:builtins.elem(lib.versions.majorpostgresql.version)value.postgresql
14+
)allVersions;
15+
versions=lib.naturalSort(lib.attrNamessupportedVersions);
16+
latestVersion=lib.lastversions;
17+
numberOfVersions=builtins.trace"Versions:${toString(builtins.lengthversions)}"(
18+
builtins.lengthversions
19+
);
20+
build=
21+
version:hash:revision:
22+
stdenv.mkDerivation{
23+
inheritpnameversion;
1224

13-
src=fetchFromGitHub{
14-
owner="michelp";
15-
repo="pgjwt";
16-
rev="${version}";
17-
hash="sha256-Hw3R9bMGDmh+dMzjmqZSy/rT4mX8cPU969OJiARFg10=";
18-
};
25+
src=fetchFromGitHub{
26+
owner="michelp";
27+
repo="pgjwt";
28+
rev=revision;
29+
inherithash;
30+
};
31+
32+
dontBuild=true;
33+
installPhase=''
34+
mkdir -p $out/share/postgresql/extension
35+
create_sql_files() {
36+
echo "Creating SQL files for previous versions..."
37+
if [[ "${version}" == "${latestVersion}" ]]; then
38+
cp *.sql $out/share/postgresql/extension
39+
fi
40+
}
41+
42+
create_control_files() {
43+
sed -e "/^default_version =/d" \
44+
-e "s|^module_pathname = .*|module_pathname = '\$libdir/${pname}'|" \
45+
${pname}.control > $out/share/postgresql/extension/${pname}--${version}.control
46+
47+
if [[ "${version}" == "${latestVersion}" ]]; then
48+
{
49+
echo "default_version = '${latestVersion}'"
50+
cat $out/share/postgresql/extension/${pname}--${latestVersion}.control
51+
} > $out/share/postgresql/extension/${pname}.control
52+
fi
53+
}
54+
55+
create_sql_files
56+
create_control_files
57+
'';
58+
59+
passthru.updateScript=unstableGitUpdater{};
60+
61+
meta=withlib;{
62+
description="PostgreSQL implementation of JSON Web Tokens";
63+
longDescription=''
64+
sign() and verify() functions to create and verify JSON Web Tokens.
65+
'';
66+
license=licenses.mit;
67+
platforms=postgresql.meta.platforms;
68+
};
69+
};
70+
packages=builtins.attrValues(
71+
lib.mapAttrs(name:value:buildnamevalue.hashvalue.revision)supportedVersions
72+
);
73+
in
74+
buildEnv{
75+
name=pname;
76+
paths=packages;
77+
pathsToLink=["/share/postgresql/extension"];
1978

20-
dontBuild=true;
21-
installPhase=''
22-
mkdir -p $out/share/postgresql/extension
23-
cp pg*sql *.control $out/share/postgresql/extension
24-
'';
25-
26-
passthru.updateScript=unstableGitUpdater{};
27-
28-
meta=withlib;{
29-
description="PostgreSQL implementation of JSON Web Tokens";
30-
longDescription=''
31-
sign() and verify() functions to create and verify JSON Web Tokens.
32-
'';
33-
license=licenses.mit;
34-
platforms=postgresql.meta.platforms;
79+
passthru={
80+
inheritversionsnumberOfVersions;
81+
pname="${pname}-all";
82+
version=
83+
"multi-"+lib.concatStringsSep"-"(map(v:lib.replaceStrings["."]["-"]v)versions);
3584
};
3685
}

‎nix/ext/tests/default.nix‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,12 +217,13 @@ builtins.listToAttrs (
217217
"hypopg"
218218
"index_advisor"
219219
"pg_cron"
220-
"pg_hashids"
221220
"pg_graphql"
221+
"pg_hashids"
222222
"pg_jsonschema"
223223
"pg_net"
224-
"pgaudit"
224+
"pg_stat_monitor"
225225
"pg_tle"
226+
"pgaudit"
226227
"vector"
227228
"wal2json"
228229
"wrappers"

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp