(Submitted to FESCo) |
m (Forgot to update the category, apparently) |
||
(18 intermediate revisions by 4 users not shown) | |||
Line 3: | Line 3: | ||
== Summary == | == Summary == | ||
Update of PostgreSQL (`postgresql` and `libpq` components) in Fedora from version 12 to version 13 in the non-modular (main) builds. | Update of PostgreSQL (`postgresql` and `libpq` components) in Fedora from version 12 to version 13 in the non-modular (main) builds. | ||
Also, there will be a design change in postgresql modular packaging regarding the external libpq library ensuring future build time compatibility. More information in the Detailed Description section. | |||
== Owner == | == Owner == | ||
Line 21: | Line 23: | ||
== Current status == | == Current status == | ||
[[Category: | [[Category:ChangeAcceptedF34]] | ||
<!-- When your change proposal page is completed and ready for review and announcement --> | <!-- When your change proposal page is completed and ready for review and announcement --> | ||
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler --> | <!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler --> | ||
<!-- The Wrangler announces the Change to the devel-announce list and changes the category to Category:ChangeAnnounced (no action required) --> | <!-- The Wrangler announces the Change to the devel-announce list and changes the category to Category:ChangeAnnounced (no action required) --> | ||
<!-- After review, the Wrangler will move your page to Category:ChangeReadyForFesco... if it still needs more work it will move back to Category: | <!-- After review, the Wrangler will move your page to Category:ChangeReadyForFesco... if it still needs more work it will move back to Category:ChangeReadyForWrangler--> | ||
<!-- Select proper category, default is Self Contained Change --> | <!-- Select proper category, default is Self Contained Change --> | ||
Line 31: | Line 33: | ||
<!-- [[Category:SystemWideChange]] --> | <!-- [[Category:SystemWideChange]] --> | ||
* Targeted release: [[Releases/ | * Targeted release: [[Releases/34 | Fedora 34 ]] | ||
* Last updated: <!-- this is an automatic macro — you don't need to change this line --> {{REVISIONYEAR}}-{{REVISIONMONTH}}-{{REVISIONDAY2}} | * Last updated: <!-- this is an automatic macro — you don't need to change this line --> {{REVISIONYEAR}}-{{REVISIONMONTH}}-{{REVISIONDAY2}} | ||
<!-- After the change proposal is accepted by FESCo, tracking bug is created in Bugzilla and linked to this page | <!-- After the change proposal is accepted by FESCo, tracking bug is created in Bugzilla and linked to this page | ||
Line 40: | Line 42: | ||
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development | CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development | ||
--> | --> | ||
* FESCo issue: [https://pagure.io/fesco/issue/ | * FESCo issue: [https://pagure.io/fesco/issue/2557 #2557] | ||
* Tracker bug: | * Tracker bug: [https://bugzilla.redhat.com/show_bug.cgi?id=1922349 #1922349] | ||
* Release notes tracker: | * Release notes tracker: [https://pagure.io/fedora-docs/release-notes/issue/655 #655] | ||
== Detailed Description == | == Detailed Description == | ||
Line 50: | Line 52: | ||
This also involves updating and rebuilding the PostgreSQL plugins that depend on postgresql server. | This also involves updating and rebuilding the PostgreSQL plugins that depend on postgresql server. | ||
There will also be a change to the packaging of postgresql modules, as with those, the external libpq library can be potentially problematic upon upstream releases. | |||
As postgresql packages are built against the separated libpq package, an incompatibility between major versions can occur with new minor upstream releases. For example, when building postgresql version 12.4 against libpq version 13.1. | |||
To keep the benefits of having separately maintained libpq library, libpq stays as a separate package. | |||
However, to solve the potential issues with the postgresql builds, we will bundle libpq with a downstream changed SONAME within each postgresql release. The postgresql will be built against this libpq. | |||
This bundled libpq will always be the same version as the corresponding postgresql as they will share the same codebase. As the libpq SONAME will be changed downstream to a non-standard SONAME, and separate libpq package with standard SONAME will be provided, this change won't affect the user experience for those components. | |||
=== Plan === | |||
* Prepare Libpq 13, PostgreSQL 13 (both rawhide and module) and PostgreSQL 12 module | |||
* Rebuild dependencies in Copr | |||
** By 2021-01-15 | |||
* Debug and fix compatibility issues found in dependencies (reasonable amount of non-critical in FTBFS state might be tolerable) | |||
** By 2021-01-22 | |||
* Prepare builds in a side-tag | |||
* Merge side-tag into Rawhide | |||
** By 2021-02-05 | |||
== Feedback == | == Feedback == | ||
Line 62: | Line 88: | ||
* Proposal owners: | * Proposal owners: | ||
<!-- What work do the feature owners have to accomplish to complete the feature in time for release? Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?--> | <!-- What work do the feature owners have to accomplish to complete the feature in time for release? Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?--> | ||
**Prepare PostgreSQL 13 as a module for Rawhide and at least one stable Fedora release ( | **Prepare PostgreSQL 13 as a module for Rawhide and at least one stable Fedora release (including the design change and symbol versioning fix) | ||
**Prepare PostgreSQL 12 as a module for | **Prepare PostgreSQL 12 as a module for Rawhide | ||
**Check software that requires or depends on `postgresql-server` or `libpq` packages for incompatibilities | **Check software that requires or depends on `postgresql-server` or `libpq` packages for incompatibilities | ||
**Build PostgreSQL 13 (postgresql and libpq) to Rawhide in a side-tag (https://fedoraproject.org/wiki/Package_update_HOWTO#Creating_a_side-tag) | |||
**Rebuild depended packages against PostgreSQL 13 in the side-tag (see Dependencies) | |||
**Merge the side-tag to Rawhide | |||
**Gather user input on the changes between PostgreSQL 12 and PostgreSQL 13 | **Gather user input on the changes between PostgreSQL 12 and PostgreSQL 13 | ||
Line 82: | Line 110: | ||
== Upgrade/compatibility impact == | == Upgrade/compatibility impact == | ||
The PostgreSQL client library (libpq component) is compatible, | The PostgreSQL client library (libpq component) is compatible, but there is an issue with symbol versioning (originally reported https://bugzilla.redhat.com/show_bug.cgi?id=1893324 was reverted, but there is a plan to fix this properly together with this PostgreSQL update tracked in https://bugzilla.redhat.com/show_bug.cgi?id=1908268). So, there shouldn't be any issues with API compatibility, but rebuild of the depended components is necessary. | ||
Server plugins might require a newer version update, because they sometimes have explicit server requirements. PostgreSQL maintainer will help fixing/rebuilding any issues in the plugins. | Server plugins might require a newer version update, because they sometimes have explicit server requirements. PostgreSQL maintainer will help fixing/rebuilding any issues in the plugins. | ||
Line 93: | Line 122: | ||
== User Experience == | == User Experience == | ||
The users will have to upgrade their databases the same way as between major PostgreSQL versions, aka `postgresql-setup --upgrade`. | The users will have to upgrade their databases the same way as between major PostgreSQL versions, aka `postgresql-setup --upgrade` after installing PostgreSQL 13 server packages. | ||
If users want to stick with PostgreSQL 12 for a little longer, there | If users want to stick with PostgreSQL 12 for a little longer, there will be PostgreSQL 12 module | ||
== Dependencies == | == Dependencies == | ||
There are some packages (mostly server plugins), that build on top of PostgreSQL. Since the separation of PostgreSQL client library (libpq component), only packages that build server plugins should use postgresql package in BuildRequires, others should use libpq. In both the cases, rebuild should be done to make sure all potential binary incompatibilities are handled. | There are some packages (mostly server plugins), that build on top of PostgreSQL. Since the separation of PostgreSQL client library (libpq component), only packages that build server plugins should use postgresql package in BuildRequires, others should use libpq. In both the cases, rebuild should be done to make sure all potential binary incompatibilities are handled. | ||
* Critical dependecies - components with higher importance, will be prioritised during the rebase | |||
** apr-util | |||
** bacula | |||
** bind | |||
** cyrus-imapd | |||
** cyrus-sasl | |||
** dovecot | |||
** freeradius | |||
** gdal | |||
** libecpg | |||
** nagios-plugins | |||
** opendbx | |||
** perl-DBD-Pg | |||
** php | |||
** pgaudit | |||
** postfix | |||
** qt | |||
** qt3 | |||
** qt5-qtbase | |||
** redland | |||
** rsyslog | |||
** rubygem-pg | |||
** postgres-decoderbufs | |||
The rest of the dependencies is not considered critical. Though, those will need to be rebuild as well. | |||
* libpq | |||
** EMBOSS | |||
** Io-language | |||
** PDAL | |||
** PyGreSQL | |||
** asterisk | |||
** biboumi | |||
** clisp | |||
** collectd | |||
** dpsearch | |||
** exim | |||
** flow-tools | |||
** freight-tools | |||
** gambas3 | |||
** gammu | |||
** gawk-pgsql | |||
** gearmand | |||
** gnatcoll-db | |||
** gnokii | |||
** grass | |||
** hydra | |||
** jabberd | |||
** kdb | |||
** kea | |||
** libdbi-drivers | |||
** libgda | |||
** libnss-pgsql | |||
** libpqxx | |||
** libpreludedb | |||
** libzdb | |||
** lua-dbi | |||
** lua-sql | |||
** mapnik | |||
** mapserver | |||
** medusa | |||
** minetestmapper | |||
** ocaml-postgresql | |||
** opensips | |||
** openvas-manager | |||
** osm2pgsql | |||
** pdns | |||
** perl-pgsql_perl5 | |||
** pg_top | |||
** pgadmin3 | |||
** pgcenter | |||
** pgmodeler | |||
** php-pecl-pq | |||
** player | |||
** postgis | |||
** postgresql | |||
** postgresql-pgpool-II | |||
** proftpd | |||
** pspp | |||
** pure-ftpd | |||
** rdkit | |||
** rhdb-utils | |||
** root | |||
** saga | |||
** soci | |||
** spatialite-gui | |||
** sphinx | |||
** sysbench | |||
** tcl-pgtcl | |||
** unicornscan | |||
** virtualpg | |||
** vtk | |||
** zabbix | |||
* postgresql-server | |||
** gambas3 | |||
** kdb | |||
** kea | |||
** libpqxx | |||
** openvas-manager | |||
** orafce | |||
** pg-semver | |||
** pgRouting | |||
** pgadmin3 | |||
** pgsphere | |||
** postgis | |||
** postgresql-ip4r | |||
** postgresql-pgpool-II | |||
** qt3 | |||
** rdkit | |||
** rhdb-utils | |||
** timescaledb | |||
== Contingency Plan == | == Contingency Plan == | ||
Revert changes in the non-modular packages and provide PostgreSQL 13 as a module stream only. | |||
Contingency plan deadline: Before Branch Fedora 34 from Rawhide (scheduled on Tue 2021-02-09) | |||
== Documentation == | == Documentation == |
Latest revision as of 22:53, 10 February 2021
PostgreSQL 13
Summary
Update of PostgreSQL (postgresql
and libpq
components) in Fedora from version 12 to version 13 in the non-modular (main) builds.
Also, there will be a design change in postgresql modular packaging regarding the external libpq library ensuring future build time compatibility. More information in the Detailed Description section.
Owner
- Name: Patrik Novotny
- Email: panovotn@redhat.com
Current status
- Targeted release: Fedora 34
- Last updated: 2021-02-10
- FESCo issue: #2557
- Tracker bug: #1922349
- Release notes tracker: #655
Detailed Description
Update of PostgreSQL (postgresql
and libpq
components) in Fedora from version 12 to version 13 in the non-modular (main) builds.
This also involves updating and rebuilding the PostgreSQL plugins that depend on postgresql server.
There will also be a change to the packaging of postgresql modules, as with those, the external libpq library can be potentially problematic upon upstream releases.
As postgresql packages are built against the separated libpq package, an incompatibility between major versions can occur with new minor upstream releases. For example, when building postgresql version 12.4 against libpq version 13.1.
To keep the benefits of having separately maintained libpq library, libpq stays as a separate package.
However, to solve the potential issues with the postgresql builds, we will bundle libpq with a downstream changed SONAME within each postgresql release. The postgresql will be built against this libpq.
This bundled libpq will always be the same version as the corresponding postgresql as they will share the same codebase. As the libpq SONAME will be changed downstream to a non-standard SONAME, and separate libpq package with standard SONAME will be provided, this change won't affect the user experience for those components.
Plan
- Prepare Libpq 13, PostgreSQL 13 (both rawhide and module) and PostgreSQL 12 module
- Rebuild dependencies in Copr
- By 2021-01-15
- Debug and fix compatibility issues found in dependencies (reasonable amount of non-critical in FTBFS state might be tolerable)
- By 2021-01-22
- Prepare builds in a side-tag
- Merge side-tag into Rawhide
- By 2021-02-05
Feedback
Benefit to Fedora
Latest stable software is used by Fedora users.
Scope
- Proposal owners:
- Prepare PostgreSQL 13 as a module for Rawhide and at least one stable Fedora release (including the design change and symbol versioning fix)
- Prepare PostgreSQL 12 as a module for Rawhide
- Check software that requires or depends on
postgresql-server
orlibpq
packages for incompatibilities - Build PostgreSQL 13 (postgresql and libpq) to Rawhide in a side-tag (https://fedoraproject.org/wiki/Package_update_HOWTO#Creating_a_side-tag)
- Rebuild depended packages against PostgreSQL 13 in the side-tag (see Dependencies)
- Merge the side-tag to Rawhide
- Gather user input on the changes between PostgreSQL 12 and PostgreSQL 13
- Other developers: N/A (not a System Wide Change)
- Release engineering: #Releng issue number (a check of an impact with Release Engineering is needed)
- Policies and guidelines: N/A (not a System Wide Change)
- Trademark approval: N/A (not needed for this Change)
Upgrade/compatibility impact
The PostgreSQL client library (libpq component) is compatible, but there is an issue with symbol versioning (originally reported https://bugzilla.redhat.com/show_bug.cgi?id=1893324 was reverted, but there is a plan to fix this properly together with this PostgreSQL update tracked in https://bugzilla.redhat.com/show_bug.cgi?id=1908268). So, there shouldn't be any issues with API compatibility, but rebuild of the depended components is necessary.
Server plugins might require a newer version update, because they sometimes have explicit server requirements. PostgreSQL maintainer will help fixing/rebuilding any issues in the plugins.
How To Test
Usual testing as when upgrading between major PostgreSQL versions, running postgresql-setup --upgrade
is necessary between major versions.
Test that all other software runs well with PostgreSQL 13.
User Experience
The users will have to upgrade their databases the same way as between major PostgreSQL versions, aka postgresql-setup --upgrade
after installing PostgreSQL 13 server packages.
If users want to stick with PostgreSQL 12 for a little longer, there will be PostgreSQL 12 module
Dependencies
There are some packages (mostly server plugins), that build on top of PostgreSQL. Since the separation of PostgreSQL client library (libpq component), only packages that build server plugins should use postgresql package in BuildRequires, others should use libpq. In both the cases, rebuild should be done to make sure all potential binary incompatibilities are handled.
- Critical dependecies - components with higher importance, will be prioritised during the rebase
- apr-util
- bacula
- bind
- cyrus-imapd
- cyrus-sasl
- dovecot
- freeradius
- gdal
- libecpg
- nagios-plugins
- opendbx
- perl-DBD-Pg
- php
- pgaudit
- postfix
- qt
- qt3
- qt5-qtbase
- redland
- rsyslog
- rubygem-pg
- postgres-decoderbufs
The rest of the dependencies is not considered critical. Though, those will need to be rebuild as well.
- libpq
- EMBOSS
- Io-language
- PDAL
- PyGreSQL
- asterisk
- biboumi
- clisp
- collectd
- dpsearch
- exim
- flow-tools
- freight-tools
- gambas3
- gammu
- gawk-pgsql
- gearmand
- gnatcoll-db
- gnokii
- grass
- hydra
- jabberd
- kdb
- kea
- libdbi-drivers
- libgda
- libnss-pgsql
- libpqxx
- libpreludedb
- libzdb
- lua-dbi
- lua-sql
- mapnik
- mapserver
- medusa
- minetestmapper
- ocaml-postgresql
- opensips
- openvas-manager
- osm2pgsql
- pdns
- perl-pgsql_perl5
- pg_top
- pgadmin3
- pgcenter
- pgmodeler
- php-pecl-pq
- player
- postgis
- postgresql
- postgresql-pgpool-II
- proftpd
- pspp
- pure-ftpd
- rdkit
- rhdb-utils
- root
- saga
- soci
- spatialite-gui
- sphinx
- sysbench
- tcl-pgtcl
- unicornscan
- virtualpg
- vtk
- zabbix
- postgresql-server
- gambas3
- kdb
- kea
- libpqxx
- openvas-manager
- orafce
- pg-semver
- pgRouting
- pgadmin3
- pgsphere
- postgis
- postgresql-ip4r
- postgresql-pgpool-II
- qt3
- rdkit
- rhdb-utils
- timescaledb
Contingency Plan
Revert changes in the non-modular packages and provide PostgreSQL 13 as a module stream only.
Contingency plan deadline: Before Branch Fedora 34 from Rawhide (scheduled on Tue 2021-02-09)
Documentation
Upgrade startegy: https://www.postgresql.org/docs/13/upgrading.html
Release Notes
Release notes for PostgreSQL 13 release: https://www.postgresql.org/docs/13/index.html
Overall overview of the changes and improvements: https://www.postgresql.org/docs/13/release-13.html