@@ -118,6 +118,7 @@ type ExtensionData struct {
118118 VersionPackages map [int ]string // PG version -> package name from pgext.pkg
119119 VersionHidden map [int ]bool // PG version -> hidden status
120120 Hidden bool // deprecated, kept for compatibility
121+ ForkBound bool // true when tags contains fork; render only via manual fork aliases
121122 Comment string
122123 RPMPkg string // RPM package template from extension.rpm_pkg
123124 DEBPkg string // DEB package template from extension.deb_pkg
@@ -170,6 +171,7 @@ func (g *PigstyConfigGenerator) loadExtensionData() (map[string]*ExtensionData,
170171 e.deb_pkg,
171172 e.rpm_pg,
172173 e.deb_pg,
174+ COALESCE(e.tags @> ARRAY['fork']::text[], false) AS fork_bound,
173175 p.pg,
174176 p.name as pkg_name,
175177 p.state,
@@ -179,7 +181,7 @@ func (g *PigstyConfigGenerator) loadExtensionData() (map[string]*ExtensionData,
179181 LEFT JOIN pgext.pkg p ON p.ext = e.name AND p.os = $1
180182 WHERE e.lead = true AND e.contrib IS NOT TRUE
181183 )
182- SELECT ext_id, name, alias, category, cat_id, comment, rpm_pkg, deb_pkg, rpm_pg, deb_pg, pg, pkg_name, state, hide
184+ SELECT ext_id, name, alias, category, cat_id, comment, rpm_pkg, deb_pkg, rpm_pg, deb_pg, fork_bound, pg, pkg_name, state, hide
183185 FROM ext_avail
184186 ORDER BY cat_id, ext_id, pg
185187 `
@@ -194,23 +196,24 @@ func (g *PigstyConfigGenerator) loadExtensionData() (map[string]*ExtensionData,
194196
195197 for rows .Next () {
196198 var (
197- extID int
198- name string
199- alias string
200- category string
201- catID int
202- comment sql.NullString
203- rpmPkg sql.NullString
204- debPkg sql.NullString
205- rpmPG interface {}
206- debPG interface {}
207- pg sql.NullInt32
208- pkgName sql.NullString
209- state sql.NullString
210- hide sql.NullBool
199+ extID int
200+ name string
201+ alias string
202+ category string
203+ catID int
204+ comment sql.NullString
205+ rpmPkg sql.NullString
206+ debPkg sql.NullString
207+ rpmPG interface {}
208+ debPG interface {}
209+ forkBound bool
210+ pg sql.NullInt32
211+ pkgName sql.NullString
212+ state sql.NullString
213+ hide sql.NullBool
211214 )
212215
213- err := rows .Scan (& extID , & name , & alias , & category , & catID , & comment , & rpmPkg , & debPkg , & rpmPG , & debPG , & pg , & pkgName , & state , & hide )
216+ err := rows .Scan (& extID , & name , & alias , & category , & catID , & comment , & rpmPkg , & debPkg , & rpmPG , & debPG , & forkBound , & pg , & pkgName , & state , & hide )
214217 if err != nil {
215218 return nil , err
216219 }
@@ -226,6 +229,7 @@ func (g *PigstyConfigGenerator) loadExtensionData() (map[string]*ExtensionData,
226229 Available : make (map [int ]bool ),
227230 VersionPackages : make (map [int ]string ),
228231 VersionHidden : make (map [int ]bool ),
232+ ForkBound : forkBound ,
229233 }
230234 if comment .Valid {
231235 extensions [name ].Comment = comment .String
@@ -491,6 +495,9 @@ func (g *PigstyConfigGenerator) generateExtensionMappings(extensions map[string]
491495 if ext .Category == "CONTRIB" {
492496 continue
493497 }
498+ if ext .ForkBound {
499+ continue
500+ }
494501
495502 // Special handling: insert hunspell aggregation alias before hunspell_cs_cz
496503 if ext .Name == "hunspell_cs_cz" && len (hunspellExts ) > 0 {
@@ -879,6 +886,7 @@ func GetConfigConstants() *ConfigConstants {
879886 {"pg_exporter" , "pg_exporter" , "pg-exporter" },
880887 {"pgbackrest_exporter" , "pgbackrest_exporter" , "pgbackrest-exporter" },
881888 {"vip-manager" , "vip-manager" , "vip-manager" },
889+ {"pg_hardstorage" , "pg-hardstorage" , "pg-hardstorage" },
882890 {"pgbadger" , "pgbadger" , "pgbadger" },
883891 {"pg_activity" , "pg_activity" , "pg-activity" },
884892 {"pg_filedump" , "pg_filedump" , "postgresql-filedump" },
@@ -894,15 +902,14 @@ func GetConfigConstants() *ConfigConstants {
894902
895903 {"agensgraph" , "agensgraph-$v" , "agensgraph-$v" },
896904 {"polardb" , "polardb-$v" , "polardb-$v" },
897- {"polar" , "polardb-$v" , "polardb-$v" },
898- {"openhalodb" , "openhalodb-14" , "openhalodb-14" },
899- //{"ivorysql", "ivorysql5", "ivorysql-5"},
900- //{"babelfish", "babelfishpg_17 babelfish_17", "babelfishpg-17 babelfishpg-17-babelfish"},
901- {"oriole" , "orioledb_$v oriolepg_$v" , "oriolepg-$v oriolepg-$v-orioledb" },
902- {"pgedge" , "pgedge_$v spock_$v lolor_$v snowflake_$v" , "pgedge-$v pgedge-$v-spock pgedge-$v-lolor pgedge-$v-snowflake" },
905+ {"openhalo" , "openhalodb-$v" , "openhalodb-$v" },
906+ {"ivorysql" , "ivorysql5" , "ivorysql-5" },
907+ {"babelfish" , "babelfish-$v" , "babelfish-$v" },
908+ {"orioledb" , "orioledb-$v" , "orioledb-$v" },
909+ {"pgedge" , "pgedge-$v" , "pgedge-$v" },
903910 {"supabase" , "pg_tle_$v,pgvector_$v,pg_cron_$v,pgsodium_$v,pg_graphql_$v,pg_jsonschema_$v,wrappers_$v,vault_$v,pgjwt_$v,pgsql_http_$v,pg_net_$v,supautils_$v,index_advisor_$v,safeupdate_$v,pg_plan_filter_$v" , "postgresql-$v-pg-tle,postgresql-$v-pg-graphql,postgresql-$v-pg-jsonschema,postgresql-$v-wrappers,postgresql-$v-pgvector,postgresql-$v-cron,postgresql-$v-pgsodium,postgresql-$v-vault,postgresql-$v-pgjwt,postgresql-$v-http,postgresql-$v-pg-net,postgresql-$v-supautils,postgresql-$v-index-advisor,postgresql-$v-pg-safeupdate,postgresql-$v-pg-plan-filter" },
904911 {"greenplum" , "open-source-greenplum-db-7" , "" },
905- {"cloudberry" , "cloudberry" , "cloudberry" },
912+ {"cloudberry" , "cloudberry cloudberry-backup cloudberry-pxf " , "cloudberry cloudberry-backup cloudberry-pxf " },
906913 {"percona-core" , "percona-postgresql18,percona-postgresql18-server,percona-postgresql18-contrib,percona-postgresql18-plperl,percona-postgresql18-plpython3,percona-postgresql18-pltcl,percona-pg_tde18" , "percona-postgresql-18 percona-postgresql-client-18 percona-postgresql-plperl-18 percona-postgresql-plpython3-18 percona-postgresql-pltcl-18 percona-pg-tde18" },
907914 {"percona-main" , "percona-postgresql18,percona-postgresql18-server,percona-postgresql18-contrib,percona-postgresql18-plperl,percona-postgresql18-plpython3,percona-postgresql18-pltcl,percona-pg_tde18,percona-postgis35_18,percona-postgis35_18-client,percona-postgis35_18-utils,percona-pgvector_18,percona-wal2json18,percona-pg_repack18,percona-pgaudit18,percona-pgaudit18_set_user,percona-pg_stat_monitor18,percona-pg_gather" , "percona-postgresql-18 percona-postgresql-client-18 percona-postgresql-plperl-18 percona-postgresql-plpython3-18 percona-postgresql-pltcl-18 percona-pg-tde18 percona-postgresql-18-postgis-3 percona-postgresql-18-pgvector percona-postgresql-18-wal2json percona-postgresql-18-repack percona-postgresql-18-pgaudit percona-pgaudit18-set-user percona-pg-stat-monitor18 percona-pg-gather" },
908915 },
@@ -964,8 +971,8 @@ pg_home_map:
964971 mssql: '/usr/babelfish-$v/'
965972 agens: '/usr/agens-$v'
966973 ivory: '/usr/ivory-5'
967- mysql: '/usr/halo-14 '
968- gpsql: '/usr/local/ cloudberry'
974+ mysql: '/usr/halo-$v '
975+ gpsql: '/usr/cloudberry'
969976 polar: '/usr/polar-$v'
970977 oriole: '/usr/oriole-$v'
971978 pgedge: '/usr/pgedge-$v'
@@ -996,8 +1003,7 @@ repo_upstream_default:
9961003 - { name: pgdg16-nonfree ,description: 'PostgreSQL 16+' ,module: extra ,releases: [8,9,10] ,arch: [x86_64 ] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/non-free/16/redhat/rhel-$releasever-$basearch' ,china: 'https://mirrors.aliyun.com/postgresql/repos/yum/non-free/16/redhat/rhel-$releasever-$basearch' ,europe: 'https://mirrors.xtom.de/postgresql/repos/yum/non-free/16/redhat/rhel-$releasever-$basearch' } ,meta: { skip_if_unavailable: 1 }}
9971004 - { name: pgdg17-nonfree ,description: 'PostgreSQL 17+' ,module: extra ,releases: [8,9,10] ,arch: [x86_64 ] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/non-free/17/redhat/rhel-$releasever-$basearch' ,china: 'https://mirrors.aliyun.com/postgresql/repos/yum/non-free/17/redhat/rhel-$releasever-$basearch' ,europe: 'https://mirrors.xtom.de/postgresql/repos/yum/non-free/17/redhat/rhel-$releasever-$basearch' } ,meta: { skip_if_unavailable: 1 }}
9981005 - { name: pgdg18-nonfree ,description: 'PostgreSQL 18+' ,module: extra ,releases: [8,9,10] ,arch: [x86_64 ] ,baseurl: { default: 'https://download.postgresql.org/pub/repos/yum/non-free/18/redhat/rhel-$releasever-$basearch' ,china: 'https://mirrors.aliyun.com/postgresql/repos/yum/non-free/18/redhat/rhel-$releasever-$basearch' ,europe: 'https://mirrors.xtom.de/postgresql/repos/yum/non-free/18/redhat/rhel-$releasever-$basearch' } ,meta: { skip_if_unavailable: 1 }}
999- - { name: timescaledb ,description: 'TimescaleDB' ,module: extra ,releases: [8,9 ] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://packagecloud.io/timescale/timescaledb/el/$releasever/$basearch' }}
1000- - { name: timescaledb ,description: 'TimescaleDB' ,module: extra ,releases: [ 10] ,arch: [x86_64 ] ,baseurl: { default: 'https://packagecloud.io/timescale/timescaledb/el/$releasever/$basearch' }}
1006+ - { name: timescaledb ,description: 'TimescaleDB' ,module: extra ,releases: [8,9,10] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://packagecloud.io/timescale/timescaledb/el/$releasever/$basearch' }}
10011007 - { name: percona ,description: 'Percona TDE' ,module: percona ,releases: [8,9,10] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://repo.pigsty.io/yum/percona/el$releasever.$basearch' ,china: 'https://repo.pigsty.cc/yum/percona/el$releasever.$basearch' ,origin: 'http://repo.percona.com/ppg-18.3/yum/release/$releasever/RPMS/$basearch' }}
10021008 - { name: groonga ,description: 'Groonga' ,module: groonga ,releases: [8,9,10] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://packages.groonga.org/almalinux/$releasever/$basearch/' }}
10031009 - { name: mysql ,description: 'MySQL' ,module: mysql ,releases: [8,9,10] ,arch: [x86_64, aarch64] ,baseurl: { default: 'https://repo.mysql.com/yum/mysql-8.4-community/el/$releasever/$basearch/' }}
@@ -1110,7 +1116,7 @@ pg_home_map:
11101116 citus: '/usr/lib/postgresql/$v'
11111117 mssql: '/usr/babelfish-$v/'
11121118 agens: '/usr/agens-$v'
1113- gpsql: '/usr/local/ cloudberry'
1119+ gpsql: '/usr/cloudberry'
11141120 ivory: '/usr/ivory-5'
11151121 mysql: '/usr/halo-14'
11161122 polar: '/usr/polar-$v'
0 commit comments