Skip to content

Commit f59c791

Browse files
committed
fix(pg_jsonschema): include unsupported versions as SQL-only for pg_upgrade compatibility
When upgrading PostgreSQL versions, pg_upgrade needs access to old extension versions sql to migrate from. This adds unsupported pg_graphql versions (those not compilable with current PostgreSQL) as SQL-only packages, ensuring migration paths exist when upgrading from older PostgreSQL versions.
1 parent 053714f commit f59c791

File tree

1 file changed

+12
-19
lines changed

1 file changed

+12
-19
lines changed

nix/ext/pg_jsonschema/default.nix

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -49,16 +49,6 @@ let
4949
# update the following array when the pg_jsonschema version is updated
5050
# required to ensure that extensions update scripts from previous versions are generated
5151

52-
previousVersions = [
53-
"0.3.1"
54-
"0.3.0"
55-
"0.2.0"
56-
"0.1.4"
57-
"0.1.3"
58-
"0.1.2"
59-
"0.1.1"
60-
"0.1.0"
61-
];
6252
CARGO = "${cargo}/bin/cargo";
6353
#darwin env needs PGPORT to be unique for build to not clash with other pgrx extensions
6454
env = lib.optionalAttrs stdenv.isDarwin {
@@ -79,19 +69,15 @@ let
7969

8070
preCheck = ''
8171
export PGRX_HOME=$(mktemp -d)
82-
export NIX_PGLIBDIR=$PGRX_HOME/${lib.versions.major postgresql.version}/lib
83-
${lib.getExe pkgs.rsync} --chmod=ugo+w -a ${postgresql}/ ${postgresql.lib}/ $PGRX_HOME/${lib.versions.major postgresql.version}/
84-
cargo pgrx init --pg${lib.versions.major postgresql.version} $PGRX_HOME/${lib.versions.major postgresql.version}/bin/pg_config
72+
export NIX_PGLIBDIR=$PGRX_HOME/${pgVersion}/lib
73+
${lib.getExe pkgs.rsync} --chmod=ugo+w -a ${postgresql}/ ${postgresql.lib}/ $PGRX_HOME/${pgVersion}/
74+
cargo pgrx init --pg${pgVersion} $PGRX_HOME/${pgVersion}/bin/pg_config
8575
'';
8676

8777
doCheck = true;
8878

89-
preBuild = ''
90-
echo "Processing git tags..."
91-
echo '${builtins.concatStringsSep "," previousVersions}' | sed 's/,/\n/g' > git_tags.txt
92-
'';
93-
9479
postInstall = ''
80+
find $out
9581
mv $out/lib/${pname}${postgresql.dlSuffix} $out/lib/${pname}-${version}${postgresql.dlSuffix}
9682
9783
create_control_files() {
@@ -120,15 +106,18 @@ let
120106
};
121107
};
122108
allVersions = (builtins.fromJSON (builtins.readFile ../versions.json)).pg_jsonschema;
109+
pgVersion = lib.versions.major postgresql.version;
123110
supportedVersions = lib.filterAttrs (
124-
_: value: builtins.elem (lib.versions.major postgresql.version) value.postgresql
111+
_: value: builtins.elem pgVersion value.postgresql
125112
) allVersions;
126113
versions = lib.naturalSort (lib.attrNames supportedVersions);
127114
latestVersion = lib.last versions;
128115
numberOfVersions = builtins.length versions;
129116
packages = builtins.attrValues (
130117
lib.mapAttrs (name: value: build name value.hash value.rust value.pgrx) supportedVersions
131118
);
119+
unsupportedVersionsItems = lib.filterAttrs (_: value: value.postgresql == [ "15" ]) allVersions;
120+
unsupportedVersions = if pgVersion == "17" then lib.attrNames unsupportedVersionsItems else [ ];
132121
in
133122
pkgs.buildEnv {
134123
name = pname;
@@ -145,6 +134,10 @@ pkgs.buildEnv {
145134
}"
146135
)
147136
137+
for v in ${lib.concatStringsSep " " unsupportedVersions}; do
138+
cp $out/share/postgresql/extension/${pname}--${lib.head versions}.sql $out/share/postgresql/extension/${pname}--$v.sql
139+
done
140+
148141
create_sql_files() {
149142
PREVIOUS_VERSION=""
150143
while IFS= read -r i; do

0 commit comments

Comments
 (0)