A powerful, open source relational database system

PostgreSQL for Mac

Join our mailing list

Stay up to date with latest software releases, news, software discounts, deals and more.

Subscribe

PostgreSQL 13.1

  -  173 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 13.1.


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 13.1 Screenshots

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

What's new in this version:

- Block DECLARE CURSOR ... WITH HOLD and firing of deferred triggers within index expressions and materialized view queries
- This is essentially a leak in the “security restricted operation” sandbox mechanism. An attacker having permission to create non-temporary SQL objects could parlay this leak to execute arbitrary SQL code as a superuser.
- The PostgreSQL Project thanks Etienne Stalmans for reporting this problem
- Fix usage of complex connection-string parameters in pg_dump, pg_restore, clusterdb, reindexdb, and vacuumdb
- The -d parameter of pg_dump and pg_restore, or the --maintenance-db parameter of the other programs mentioned, can be a “connection string” containing multiple connection parameters rather than just a database name. In cases where these programs need to initiate additional connections, such as parallel processing or processing of multiple databases, the connection string was forgotten and just the basic connection parameters (database name, host, port, and username) were used for the additional connections. This could lead to connection failures if the connection string included any other essential information, such as non-default SSL or GSS parameters. Worse, the connection might succeed but not be encrypted as intended, or be vulnerable to man-in-the-middle attacks that the intended connection parameters would have prevented. (CVE-2020-25694)
- When psql's connect command re-uses connection parameters, ensure that all non-overridden parameters from a previous connection string are re-used
- This avoids cases where reconnection might fail due to omission of relevant parameters, such as non-default SSL or GSS options. Worse, the reconnection might succeed but not be encrypted as intended, or be vulnerable to man-in-the-middle attacks that the intended connection parameters would have prevented. This is largely the same problem as just cited for pg_dump et al, although psql's behavior is more complex since the user may intentionally override some connection parameters.
- Prevent psql's gset command from modifying specially-treated variables
- gset without a prefix would overwrite whatever variables the server told it to. Thus, a compromised server could set specially-treated variables such as PROMPT1, giving the ability to execute arbitrary shell code in the user's session.
- The PostgreSQL Project thanks Nick Cleaton for reporting this problem.
- Fix unintended breakage of the replication protocol
- A walsender reports two command-completion events for START_REPLICATION. This was undocumented and apparently unintentional; so we failed to notice that a late 13.0 change removed the duplicate event. However it turns out that walreceivers require the extra event in some code paths. The most practical fix is to decree that the extra event is part of the protocol and resume generating it.
- Ensure that SLRU directories are properly fsync'd during checkpoints
- This prevents possible data loss in a subsequent operating system crash.
- Fix ALTER ROLE for users with the BYPASSRLS attribute
- The BYPASSRLS attribute is only allowed to be changed by superusers, but other ALTER ROLE operations, such as password changes, should be allowed with only ordinary permission checks. The previous coding erroneously restricted all changes on such a role to superusers.
- Disallow ALTER TABLE ONLY ... DROP EXPRESSION when there are child tables
- The current implementation cannot handle this case correctly, so just forbid it for now.
- Ensure that ALTER TABLE ONLY ... ENABLE/DISABLE TRIGGER does not recurse to child tables
- Previously the ONLY flag was ignored.
- Allow LOCK TABLE to succeed on a self-referential view
- It previously threw an error complaining about infinite recursion, but there seems no need to disallow the case.
- Retain statistics about an index across REINDEX CONCURRENTLY
- Non-concurrent reindexing has always preserved such statistics
- Fix incorrect progress reporting from REINDEX CONCURRENTLY
- Ensure that GENERATED columns are updated when the column(s) they depend on are updated via a rule or an updatable view
- This fix also takes care of possible failure to fire a column-specific trigger in such cases.
- Fix failures with collation-dependent partition bound expressions
- Support hashing of text arrays
- Array hashing failed if the array element type is collatable. Notably, this prevented using hash partitioning with a text array column as partition key.
- Prevent internal overflows in cross-type datetime comparisons
- Previously, comparing a date to a timestamp would fail if the date is past the valid range for timestamps. There were also corner cases involving overflow of close-to-the-limit timestamp values during timezone rotation.
- Fix off-by-one conversion of negative years to BC dates in to_date() and to_timestamp()
- Also, arrange for the combination of a negative year and an explicit “BC” marker to cancel out and produce AD
- Allow the jsonpath .datetime() method to accept ISO 8601-format timestamps
- This is not required by SQL, but it seems appropriate since our to_json() functions generate that timestamp format for Javascript compatibility
- Ensure that standby servers will archive WAL timeline history files when archive_mode is set to always
- This oversight could lead to failure of subsequent PITR recovery attempts
- Fix edge cases in detecting premature death of the postmaster on platforms that use kqueue()
- Avoid generating an incorrect incremental-sort plan when the sort key is a volatile expression
- Fix possible crash when considering partition-wise joins during GEQO planning
- Fix possible infinite loop or corrupted output data in TOAST decompression
- Fix counting of the number of entries in B-tree indexes during cleanup-only VACUUMs
- Ensure that data is detoasted before being inserted into a BRIN index
- Index entries are not supposed to contain out-of-line TOAST pointers, but BRIN didn't get that memo. This could lead to errors like “missing chunk number 0 for toast value NNN”. (If you are faced with such an error from an existing index, REINDEX should be enough to fix it.)
- Fix buffered GiST index builds to work when the index has included columns
- Fix unportable use of getnameinfo() in pg_hba_file_rules view
- On FreeBSD 11, and possibly other platforms, the view's address and netmask columns were always null due to this error
- Avoid crash if debug_query_string is NULL when starting a parallel worker
- Avoid failures when a BEFORE ROW UPDATE trigger returns the “old” row of a table having dropped or “missing” columns
- This method of suppressing an update could result in crashes, unexpected CHECK constraint failures, or incorrect RETURNING output, because “missing” columns would read as NULLs for those purposes. (A column is “missing” for this purpose if it was added by ALTER TABLE ADD COLUMN with a non-NULL, but constant, default value.) Dropped columns could cause trouble as well.
- Fix EXPLAIN's output for incremental sort plans to have correct tag nesting in XML output mode
- Avoid unnecessary failure when transferring very large payloads through shared memory queues
- Fix omission of result data type coercion in some cases in SQL-language functions
- This could lead to wrong results or crashes, depending on the data types involved.
- Fix incorrect handling of template function attributes in JIT code generation
- This has been shown to cause crashes on s390x, and very possibly there are other cases on other platforms
- Improve code generated for compare_exchange and fetch_add operations on PPC
- Fix relation cache memory leaks with RLS policies
- Fix edge-case memory leak in index_get_partition()
- Fix small memory leak when SIGHUP processing decides that a new GUC variable value cannot be applied without a restart
- Fix memory leaks in PL/pgsql's CALL processing
- In libpq for Windows, call WSAStartup() once per process and WSACleanup() not at all
- Previously, libpq invoked WSAStartup() at connection start and WSACleanup() at connection cleanup. However, it appears that calling WSACleanup() can interfere with other program operations; notably, we have observed rare failures to emit expected output to stdout. There appear to be no ill effects from omitting the call, so do that. (This also eliminates a performance issue from repeated DLL loads and unloads when a program performs a series of database connections.)
- Fix ecpg library's per-thread initialization logic for Windows
- Multi-threaded ecpg applications could suffer rare misbehavior due to incorrect locking
- Fix ecpg's mis-processing of B'...' and X'...' literals
- On Windows, make psql read the output of a backtick command in text mode, not binary mode
- This ensures proper handling of newlines
- Ensure that pg_dump collects per-column information about extension configuration tables
- Failure to do this led to crashes when specifying --inserts, or underspecified (though usually correct) COPY commands when using COPY to reload the tables' data
- Make pg_upgrade check for pre-existence of tablespace directories in the target cluster
- Fix potential memory leak in contrib/pgcrypto
- Add check for an unlikely failure case in contrib/pgcrypto
- Fix recently-added timetz test case so it works when the USA is not observing daylight savings time
- Update time zone data files to tzdata release 2020d for DST law changes in Fiji, Morocco, Palestine, the Canadian Yukon, Macquarie Island, and Casey Station (Antarctica); plus historical corrections for France, Hungary, Monaco, and Palestine.
- Sync our copy of the timezone library with IANA tzcode release 2020d
- This absorbs upstream's change of zic's default output option from “fat” to “slim”. That's just cosmetic for our purposes, as we continue to select the “fat” mode in pre-v13 branches. This change also ensures that strftime() does not change errno unless it fails.

Join our mailing list

Stay up to date with latest software releases, news, software discounts, deals and more.

Subscribe