Welcome to libpqxx, the official C++ API to the PostgreSQL database
management system.
There are many similar libraries for PostgreSQL and for other
databases, some of them database-independent. Most of these, however,
are fairly C-like in their programming style, and fail to take
advantage of the full power of the C++ language as it has matured
since the acceptance of the Standard in 1996. What libpqxx brings you
is effective use of templates to reduce the inconvenience of dealing
with type conversions; of standard C++ strings to keep you from having
to worry about buffer allocation and overflow attacks; of exceptions
to take the tedious and error-prone plumbing around error handling out
of your hands; of constructors and destructors to bring resource
management under control; and even basic object-orientation to give
you some extra reliability features that would be hard to get with
most other database interfaces.
Affects: users of databases/postgresql* and other software using PostgreSQL to run
Author: kbowling@FreeBSD.org
Reason:
The default version of PostgreSQL has been switched from 17 to 18.
The upgrade procedure can use up twice the space the databases
currently needs. If you have a big amount of stored data take a
closer look at the manpage of pg_upgrade for avoidance and/or
speedup of the upgrade.
The upgrade instructions consider a basic usage and do not match
complex scenarios like replication, sharding, or similar.
Upgrade instructions:
First stop your PostgreSQL, create PostgreSQL-binaries and backup your data.
If you have another Version of PostgreSQL installed, for example 17, your
files are named according to this.
# service postgresql stop
# pkg create postgresql17-server postgresql17-contrib
# mkdir /tmp/pg-upgrade
# tar xf postgresql17-server-17.9.pkg -C /tmp/pg-upgrade
# tar xf postgresql17-contrib-17.9.pkg -C /tmp/pg-upgrade
# pkg delete -f databases/postgresql17-server databases/postgresql17-contrib databases/postgresql17-client
Now update PostgreSQL:
pkg user:
# pkg install databases/postgresql18-server databases/postgresql18-contrib
# pkg upgrade
Portmaster users:
# portmaster databases/postgresql18-server databases/postgresql18-contrib
# portmaster -a
Portupgrade users:
# portinstall databases/postgresql18-server databases/postgresql18-contrib
# portupgrade -a
After installing the new PostgreSQL version you need to convert
all your databases to new version:
# su -l postgres -c "/usr/local/bin/initdb --encoding=utf-8 --lc-collate=C --no-data-checksums -D /var/db/postgres/data18 -U postgres"
# su -l postgres -c "pg_upgrade -b /tmp/pg-upgrade/usr/local/bin/ -d /var/db/postgres/data17/ -B /usr/local/bin/ -D /var/db/postgres/data18/ -U postgres "
Now the migration is finished. You can start PostgreSQL again with:
# service postgresql start
ATTENTION:
1) If you use non-default initdb options, you have to adjust the initdb-command accordingly
2) The initdb in the upgrade procedure uses '--no-data-checksums' to enable
pg_upgrade from before this change. You should review the documentation and
decide whether you want to then enable checksums with pg_checksums. Future
upgrade instructions for PostgreSQL 19 and later will assume a default
initdb, and therefore that checksums are enabled.
Affects: users of databases/postgresql* and other software using PostgreSQL to run
Author: kbowling@FreeBSD.org
Reason:
The default version of PostgreSQL has been switched from 16 to 17.
The upgrade procedure can use up twice the space the databases
currently needs. If you have a big amount of stored data take a
closer look at the manpage of pg_upgrade for avoidance and/or
speedup of the upgrade.
The upgrade instructions consider a basic usage and do not match
complex scenarios like replication, sharding, or similar.
Upgrade instructions:
First stop your PostgreSQL, create PostgreSQL-binaries and backup your data.
If you have another Version of PostgreSQL installed, for example 16, your
files are named according to this.
# service postgresql stop
# pkg create postgresql16-server postgresql16-contrib
# mkdir /tmp/pg-upgrade
# tar xf postgresql16-server-16.8.pkg -C /tmp/pg-upgrade
# tar xf postgresql16-contrib-16.8.pkg -C /tmp/pg-upgrade
# pkg delete -f databases/postgresql16-server databases/postgresql16-contrib databases/postgresql16-client
Now update PostgreSQL:
pkg user:
# pkg install databases/postgresql17-server databases/postgresql17-contrib
# pkg upgrade
Portmaster users:
# portmaster databases/postgresql17-server databases/postgresql17-contrib
# portmaster -a
Portupgrade users:
# portinstall databases/postgresql17-server databases/postgresql17-contrib
# portupgrade -a
After installing the new PostgreSQL version you need to convert
all your databases to new version:
# su -l postgres -c "/usr/local/bin/initdb --encoding=utf-8 --lc-collate=C -D /var/db/postgres/data17 -U postgres"
# su -l postgres -c "pg_upgrade -b /tmp/pg-upgrade/usr/local/bin/ -d /var/db/postgres/data16/ -B /usr/local/bin/ -D /var/db/postgres/data17/ -U postgres "
Now the migration is finished. You can start PostgreSQL again with:
# service postgresql start
ATTENTION:
1) If you use non-default initdb options, you have to adjust the initdb-command accordingly
2024-07-23
Affects: users of databases/postgresql* and other software using PostgreSQL to run
Author: kbowling@FreeBSD.org
Reason:
The default version of PostgreSQL has been switched from 15 to 16.
The upgrade procedure can use up twice the space the databases
currently needs. If you have a big amount of stored data take a
closer look at the manpage of pg_upgrade for avoidance and/or
speedup of the upgrade.
The upgrade instructions consider a basic usage and do not match
complex scenarios like replication, sharding, or similar.
Upgrade instructions:
First stop your PostgreSQL, create PostgreSQL-binaries and backup your data.
If you have another Version of PostgreSQL installed, for example 15, your
files are named according to this.
# service postgresql stop
# pkg create postgresql15-server postgresql15-contrib
# mkdir /tmp/pg-upgrade
# tar xf postgresql15-server-15.7.pkg -C /tmp/pg-upgrade
# tar xf postgresql15-contrib-15.7.pkg -C /tmp/pg-upgrade
# pkg delete -f databases/postgresql15-server databases/postgresql15-contrib databases/postgresql15-client
Now update PostgreSQL:
pkg user:
# pkg install databases/postgresql16-server databases/postgresql16-contrib
# pkg upgrade
Portmaster users:
# portmaster databases/postgresql16-server databases/postgresql16-contrib
# portmaster -a
Portupgrade users:
# portinstall databases/postgresql16-server databases/postgresql16-contrib
# portupgrade -a
After installing the new PostgreSQL version you need to convert
all your databases to new version:
# su -l postgres -c "/usr/local/bin/initdb --encoding=utf-8 --lc-collate=C -D /var/db/postgres/data16 -U postgres"
# su -l postgres -c "pg_upgrade -b /tmp/pg-upgrade/usr/local/bin/ -d /var/db/postgres/data15/ -B /usr/local/bin/ -D /var/db/postgres/data16/ -U postgres "
Now the migration is finished. You can start PostgreSQL again with:
# service postgresql start
ATTENTION:
1) If you use non-default initdb options, you have to adjust the initdb-command accordingly
2023-09-08
Affects: users of databases/postgresql* and other software using PostgreSQL to run
Author: kbowling@FreeBSD.org
Reason:
The default version of PostgreSQL has been switched from 13 to 15.
The upgrade procedure can use up twice the space the databases
currently needs. If you have a big amount of stored data take a
closer look at the manpage of pg_upgrade for avoidance and/or
speedup of the upgrade.
The upgrade instructions consider a basic usage and do not match
complex scenarios like replication, sharding, or similar.
Upgrade instructions:
First stop your PostgreSQL, create PostgreSQL-binaries and backup your data.
If you have another Version of PostgreSQL installed, for example 13, your
files are named according to this.
# service postgresql stop
# pkg create postgresql13-server postgresql13-contrib
# mkdir /tmp/pg-upgrade
# tar xf postgresql13-server-13.12.pkg -C /tmp/pg-upgrade
# tar xf postgresql13-contrib-13.12.pkg -C /tmp/pg-upgrade
# pkg delete -f databases/postgresql13-server databases/postgresql13-contrib databases/postgresql13-client
Now update PostgreSQL:
pkg user:
# pkg install databases/postgresql15-server databases/postgresql15-contrib
# pkg upgrade
Portmaster users:
# portmaster databases/postgresql15-server databases/postgresql15-contrib
# portmaster -a
Portupgrade users:
# portinstall databases/postgresql15-server databases/postgresql15-contrib
# portupgrade -a
After installing the new PostgreSQL version you need to convert
all your databases to new version:
# su -l postgres -c "/usr/local/bin/initdb --encoding=utf-8 --lc-collate=C -D /var/db/postgres/data15 -U postgres"
# su -l postgres -c "pg_upgrade -b /tmp/pg-upgrade/usr/local/bin/ -d /var/db/postgres/data13/ -B /usr/local/bin/ -D /var/db/postgres/data15/ -U postgres "
Now the migration is finished. You can start PostgreSQL again with:
# service postgresql start
ATTENTION:
1) The default user changed from "pgsql" to "postgres" in 11. The migration steps above now assume
the "postgres" database user and FreeBSD user.
2) If you use non-default initdb options, you have to adjust the initdb-command accordingly
2021-10-24
Affects: users of databases/postgresql* and other software using PostgreSQL to run
Author: kbowling@FreeBSD.org
Reason:
The default version of PostgreSQL has been switched from 12 to 13.
The upgrade procedure can use up twice the space the databases
currently needs. If you have a big amount of stored data take a
closer look at the manpage of pg_upgrade for avoidance and/or
speedup of the upgrade.
The upgrade instructions consider a basic usage and do not match
complex scenarios like replication, sharding, or similar.
Upgrade instructions:
First stop your PostgreSQL, create PostgreSQL-binaries and backup your data.
If you have another Version of PostgreSQL installed, for example 12.8, your
files are named according to this.
# service postgresql stop
# pkg create postgresql12-server postgresql12-contrib
# mkdir /tmp/pg-upgrade
# tar xf postgresql12-server-12.8.pkg -C /tmp/pg-upgrade
# tar xf postgresql12-contrib-12.8.pkg -C /tmp/pg-upgrade
# pkg delete -f databases/postgresql12-server databases/postgresql12-contrib databases/postgresql12-client
Now update PostgreSQL:
pkg user:
# pkg install databases/postgresql13-server databases/postgresql13-contrib
# pkg upgrade
Portmaster users:
# portmaster databases/postgresql13-server databases/postgresql13-contrib
# portmaster -a
Portupgrade users:
# portinstall databases/postgresql13-server databases/postgresql13-contrib
# portupgrade -a
After installing the new PostgreSQL version you need to convert
all your databases to new version:
# su -l postgres -c "/usr/local/bin/initdb --encoding=utf-8 --lc-collate=C -D /var/db/postgres/data13 -U postgres"
# su -l postgres -c "pg_upgrade -b /tmp/pg-upgrade/usr/local/bin/ -d /var/db/postgres/data12/ -B /usr/local/bin/ -D /var/db/postgres/data13/ -U postgres "
Now the migration is finished. You can start PostgreSQL again with:
# service postgresql start
ATTENTION:
1) The default user changed from "pgsql" to "postgres" in 11. The migration steps above now assume
the "postgres" database user and FreeBSD user.
2) If you use non-default initdb options, you have to adjust the initdb-command accordingly
databases/postgresql-libpqxx: Convert to CMake and modernize
* Switch to CMake as it cleans up Makefile, builds faster and adds
.cmake files to port
* Modernize port Makefile
* Remove ancient CONFLICTS entry
PR: 281022
Approved by: pgsql (girgen)
Remove WWW entries moved into port Makefiles
Commit b7f05445c00f has added WWW entries to port Makefiles based on
WWW: lines in pkg-descr files.
This commit removes the WWW: lines of moved-over URLs from these
pkg-descr files.
Approved by: portmgr (tcberner)
Add WWW entries to port Makefiles
It has been common practice to have one or more URLs at the end of the
ports' pkg-descr files, one per line and prefixed with "WWW:". These
URLs should point at a project website or other relevant resources.
Access to these URLs required processing of the pkg-descr files, and
they have often become stale over time. If more than one such URL was
present in a pkg-descr file, only the first one was tarnsfered into
the port INDEX, but for many ports only the last line did contain the
port specific URL to further information.
There have been several proposals to make a project URL available as
a macro in the ports' Makefiles, over time.
(Only the first 15 lines of the commit message are shown above )
Bump PORTREVISION for ports depending on the canonical version of GCC
as defined in Mk/bsd.default-versions.mk which has moved from GCC 8.3
to GCC 9.1 under most circumstances now after revision 507371.
This includes ports
- with USE_GCC=yes or USE_GCC=any,
- with USES=fortran,
- using Mk/bsd.octave.mk which in turn features USES=fortran, and
- with USES=compiler specifying openmp, nestedfct, c11, c++0x, c++11-lang,
c++11-lib, c++14-lang, c++17-lang, or gcc-c++11-lib
plus, everything INDEX-11 shows with a dependency on lang/gcc9 now.
PR: 238330
Bump PORTREVISION for ports depending on the canonical version of GCC
defined via Mk/bsd.default-versions.mk which has moved from GCC 7.4 t
GCC 8.2 under most circumstances.
This includes ports
- with USE_GCC=yes or USE_GCC=any,
- with USES=fortran,
- using Mk/bsd.octave.mk which in turn features USES=fortran, and
- with USES=compiler specifying openmp, nestedfct, c11, c++0x, c++11-lang,
c++11-lib, c++14-lang, c++17-lang, or gcc-c++11-lib
plus, as a double check, everything INDEX-11 showed depending on lang/gcc7.
PR: 231590
Bump PORTREVISION for ports depending on the canonical version of GCC
in the ports tree (via Mk/bsd.default-versions.mk and lang/gcc) which
has now moved from GCC 6 to GCC 7 by default.
This includes ports
- featuring USE_GCC=yes or USE_GCC=any,
- featuring USES=fortran,
- using Mk/bsd.octave.mk which in turn features USES=fortran, and those
- with USES=compiler specifying one of openmp, nestedfct, c11, c++0x,
c++11-lib, c++11-lang, c++14-lang, c++17-lang, or gcc-c++11-lib.
PR: 222542
Adjust USES to fix builds on gcc-based architectures.
While here, pet portlint.
Tested for no regression on amd64.
Approved by: portmgr (tier-2 blanket)
Update postgresql-libpqxx to latest version 6
Keep version 4 as a separate port
Set license for the old version 3 port
PR: 225109
Submitted by: Yuri Victorovich
Use USES=pathfix where applicable.
PR: 213195
Submitted by: mat
Exp-run by: antoine
Sponsored by: Absolight
Differential Revision: https://reviews.freebsd.org/D8093
Switch default python_CMD used by shebangfix to ${PYTHON_CMD} for ports
using python
PR: 201077
Reviewed by: mat
With hat: portmgr
Differential Revision: https://reviews.freebsd.org/D2955
- restore databases/postgresql-libpqxx, distfiles are now available
- maintainership over to pgsql@ (with hat pgsql@)
Reported by: kjedruczyk@fastmail.net
Deprecate a bunch of ports that are either abandonware and/or for which no more
public distfiles are available, or for which are -devel version with a more
recent stable version for long
Feature safe: yes
- Update libpqxx to 4.0. [1]
- Update CONFLICTS in libpqxx30.
- Add instructions to UPDATING for people willing to stick with
version 3.
Submitted by: arrowdodger via IRC [1]
Bump portrevision due to upgrade of devel/gettext.
The affected ports are the ones with gettext as a run-dependency
according to ports/INDEX-7 (5007 of them) and the ones with USE_GETTEXT
in Makefile (29 of them).
PR: ports/124340
Submitted by: edwin@
Approved by: portmgr (pav)
Updating to version 2.6.9:
"Many things have changed. Bugs have been fixed, new features
have been introduced. But most importantly, we're really retiring
the old 1.x-style libpqxx API now. This API (where upper-case letters
were still used in function names and such) has been supported for
more than three years in the interest of backwards compatibility,
but has been marked as obsolete all this time."
Mass-conversion to the USE_AUTOTOOLS New World Order. The code present
in bsd.autotools.mk essentially makes this a no-op given that all the
old variables set a USE_AUTOTOOLS_COMPAT variable, which is parsed in
exactly the same way as USE_AUTOTOOLS itself.
Moreover, USE_AUTOTOOLS has already been extensively tested by the GNOME
team -- all GNOME 2.12.x ports use it.
Preliminary documentation can be found at:
http://people.FreeBSD.org/~ade/autotools.txt
which is in the process of being SGMLized before introduction into the
Porters Handbook.
Light blue touch-paper. Run.
Split the postgresql ports into a server and a client part.
All ports depending on postgresql shall use the USE_PGSQL=yes knob
defined in Mk/bsd.ports.mk. Bumping portrevisions where needed.
PR: 75344
Approved by: portmgr@ (kris), ade & sean (mentors)
Fix configure checks for C++ headers on 4.x
PR: ????? (¹)
Submitted by: maintainer
(¹) PR was cc'd to me six hours ago, but hasn't made it into GNATS yet.
Assemble an away team, number one!
Apply a big libtool patch to allow porters to use the libtool installed by
the libtoolX ports instead of the one included with each port. Ports that
set USE_LIBTOOL_VER=X will now use the ports version of libtool instead of
the included version. To restore previous behavior, use the new macro,
USE_INC_LIBTOOL_VER. Both macros accept the same argument: a libtool version.
For example, to use the ports version of libtool-1.5, add the following to
your Makefile:
USE_LIBTOOL_VER= 15
To use the included version of libtool with extra hacks provided by
libtool-1.5, add the following to your Makefile:
USE_INC_LIBTOOL_VER= 15
With this change, ports that had to add additional libtool hacks to prevent
.la files from being installed or to fix certain threading issues can now
delete those hacks (after appropriate testing, of course).
PR: 63944
Based on work by:eik and marcus
Approved by: ade (autotools maintainer)
Tested by: kris on pointyhat
Bound to be hidden problems: You bet
Add libpqxx. libpqxx is no longer hosted under the main PostgreSQL tree and
is now a project on gborg. libpqxx is still a supported interface.
PR: ports/45944
Submitted by: Palle Girgensohn <girgen@pingpong.net>