A powerful, open source relational database system

PostgreSQL for Mac

PostgreSQL 16.4

  -  350 MB  -  Freeware

Sometimes latest versions of the software can cause issues when installed on older devices or devices running an older version of the operating system.

Software makers usually fix these issues but it can take them some time. What you can do in the meantime is to download and install an older version of PostgreSQL 16.4.


For those interested in downloading the most recent release of PostgreSQL for Mac or reading our review, simply click here.


All old versions distributed on our website are completely virus-free and available for download at no cost.


We would love to hear from you

If you have any questions or ideas that you want to share with us - head over to our Contact page and let us know. We value your feedback!

  • PostgreSQL 16.4 Screenshots

    The images below have been resized. Click on them to view the screenshots in full size.

    PostgreSQL 16.4 Screenshot 1
  • PostgreSQL 16.4 Screenshot 2
  • PostgreSQL 16.4 Screenshot 3

What's new in this version:

- void incorrect results from "Merge Right Anti Join" plans, where if the inner relation is known to have unique join keys, the merge could misbehave when there are duplicated join keys in the outer relation.
- Prevent infinite loop in VACUUM.
- Fix partition pruning setup during ALTER TABLE DETACH ... PARTITION CONCURRENTLY.
- Fix behavior of stable functions that are used as an argument to a CALL statement.
- pg_sequence_last_value() now returns NULL instead of throwing an error when called on unlogged sequences on standby servers and on temporary sequences of other sessions.
- Fix parsing of ignored operators in websearch_to_tsquery().
- Correctly check updatability of view columns targeted by INSERT ... DEFAULT.
- Lock owned sequences during ALTER TABLE ... SET LOGGED|UNLOGGED.
- Don't throw an error if a queued AFTER trigger no longer exists.
- Fix selection of an arbiter index for INSERT ... ON CONFLICT when the desired index has expressions or predicates, for example, through an updatable view.
- Refuse to modify a temporary table of another session with ALTER TABLE.
- Fix handling of extended statistics on expressions in CREATE TABLE ... LIKE STATISTICS.
- Fix failure to recalculate sub-queries generated from MIN() or MAX() aggregates.
- Disallow underscores in positional parameters.
- Avoid crashing when a JIT-inlined backend function throws an error.
- Fix handling of subtransactions of prepared transactions when starting a hot standby server.
- Prevent incorrect initialization of logical replication slots.
- Fix memory leak in the logical replication WAL sender when publishing changes to a partitioned table whose partitions have row types that are physically different from the table.
- Disable creation of stateful TLS session tickets by OpenSSL.
- Fix how PL/pgSQL handles integer ranges containing underscores (e.g., FOR i IN 1_001..1_002).
- Fix incompatibility between PL/Perl and Perl 5.40.
- Several fixes related to recursive PL/Python functions and triggers.
- Ensure that pg_restore -l reports dependent table of contents entries correctly.
- pg_stat_statements now passes a query ID for utility (non-SELECT/INSERT/UPDATE) statements that appears in SQL-language functions.
- Fix for postgres_fdw when mapping a foreign table to a nontrivial remote view.