
Runs stored procedures in more than a dozen programming languages, including Java, etc. Permits the database designer to create rules which identify specific operations for a given table or view. Offers the ability to database designers to derive new tables from other tables.
PostgreSQL is an object-relational database management system (ORDBMS) created originally at University of California. Its SQL implementation strongly conforms to the ANSI-SQL 92/99 standards supporting it. It has full support for triggers, views, queries, stored procedures, joins, multiple languages, among others. Some features of this Database include multi version concurrency control (MVCC), point in time recovery, tablespaces, replication (asynchronous), nested transaction, online backups, fault tolerance and many other sophisticated features to provide data integrity.
Some of the allowed maximum values offer big possibilities for huge database systems: unlimited maximum Database size, rows per table and indexes per table, or 32TB maximum for a table's size. The system supports SSL and IPv6 protocols. It also supports many data types, like arrays and XML among many others. Third party contributions are also important for this ORDBMS, because many of the tools to develop, access or use this database exist only because of them. The system also supports GIS (Geographical Information System) data and it can be used for mapping and localization purposes.
The current release includes many fixes reported by its contributors and some new features like full text search integration, support for SQL/XML standard, includes some new data types (enumerated, arrays of composite types, XML, Universal Unique Identifier), it improves logging and statics collections, and much more.
Its installation process is very easy to perform; moreover, some third party utilities and programs are included depending your requests or needs. The Stack Builder utility manages all the installations. Its GUI depends on how would you like to view your data; a nice program to view and manage your databases is pgAdmin III. Its documentation is very complete and detailed; you can find a lot of documentation in its website and included with the program. PostgreSQL works in Linux, UNIX and Windows platforms.
v15.2 [Feb 18, 2023]
E.1.1. Migration to Version 15.2
A dump/restore is not required for those running 15.X.
However, if you are upgrading from a version earlier than 15.1, see Section E.2.
E.1.2. Changes
- libpq can leak memory contents after GSSAPI transport encryption initiation fails (Jacob Champion)
A modified server, or an unauthenticated man-in-the-middle, can send a not-zero-terminated error message during setup of GSSAPI (Kerberos) transport encryption. libpq will then copy that string, as well as following bytes in application memory up to the next zero byte, to its error report. Depending on what the calling application does with the error report, this could result in disclosure of application memory contents. There is also a small probability of a crash due to reading beyond the end of memory. Fix by properly zero-terminating the server message. (CVE-2022-41862)
- Fix calculation of which GENERATED columns need to be updated in child tables during an UPDATE on a partitioned table or inheritance tree (Amit Langote, Tom Lane)
This fixes failure to update GENERATED columns that do not exist in the parent table, or that have different dependencies than are in the parent column's generation expression.
- Fix possible failure of MERGE to compute GENERATED columns (Dean Rasheed)
When the first row-level action of the MERGE was an UPDATE, any subsequent INSERT actions would fail to compute GENERATED columns that were deemed unnecessary to compute for the UPDATE action (due to not depending on any of the UPDATE target columns).
- Fix MERGE's check for unreachable WHEN clauses (Dean Rasheed)
A WHEN clause following an unconditional WHEN clause should be rejected as unreachable, but this case was not always detected.
- Fix MERGE's rule-detection test (Dean Rasheed)
MERGE is not supported on tables with rules; but it also failed on tables that once had rules but no longer do.
- In MERGE, don't count a DO NOTHING action as a processed tuple (Álvaro Herrera)
This makes the code's behavior match the documentation.
- Allow a WITH RECURSIVE ... CYCLE CTE to access its output column (Tom Lane)
A reference to the SET column from within the CTE would fail with “cache lookup failed for type 0”.
- Fix handling of pending inserts when doing a bulk insertion to a foreign table (Etsuro Fujita)
In some cases pending insertions were not flushed to the FDW soon enough, leading to logical inconsistencies, for example BEFORE ROW triggers not seeing rows they should be able to see.
- Allow REPLICA IDENTITY to be set on an index that's not (yet) valid (Tom Lane)
When pg_dump dumps a partitioned index that's marked REPLICA IDENTITY, it generates a command sequence that applies REPLICA IDENTITY before the partitioned index has been marked valid, causing restore to fail. There seems no very good reason to prohibit doing it in that order, so allow it. The marking will have no effect anyway until the index becomes valid.
- Fix handling of DEFAULT markers in rules that perform an INSERT from a multi-row VALUES list (Dean Rasheed)
In some cases a DEFAULT marker would not get replaced with the proper default-value expression, leading to an “unrecognized node type” error.
- Reject uses of undefined variables in jsonpath existence checks (Alexander Korotkov, David G. Johnston)
While jsonpath match operators threw an error for an undefined variable in the path pattern, the existence operators silently treated it as a match.
- Fix jsonb subscripting to cope with toasted subscript values (Tom Lane, David G. Johnston)
Using a text value fetched directly from a table as a jsonb subscript was likely to fail. Fetches would usually not find any matching element. Assignments could store the value with a garbage key, although keys long enough to cause that problem are probably rare in the field.
- Fix edge-case data corruption in parallel hash joins (Dmitry Astapov)
If the final chunk of a large tuple being written out to a temporary file was exactly 32760 bytes, it would be corrupted due to a fencepost bug. The query would typically fail later with corrupted-data symptoms.
- Honor non-default settings of checkpoint_completion_target (Bharath Rupireddy)
Internal state was not updated after a change in checkpoint_completion_target, possibly resulting in performing checkpoint I/O faster or slower than desired, especially if that setting was changed on-the-fly.
- Log the correct ending timestamp in recovery_target_xid mode (Tom Lane)
When ending recovery based on the recovery_target_xid setting with recovery_target_inclusive = off, we printed an incorrect timestamp (always 2000-01-01) in the “recovery stopping before ... transaction” log message.