
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.
v16.1 [Nov 10, 2023]
This release contains a variety of fixes from 16.0:
- Fix handling of unknown-type arguments in DISTINCT "any" aggregate functions.
- Detect integer overflow while computing new array dimensions.
- Prevent the pg_signal_backend role from signalling background workers and autovacuum processes.
- Prevent de-duplication of btree index entries for interval columns.
- Process date values more sanely in BRIN datetime_minmax_multi_ops indexes.
- Process large timestamp and timestamptz values more sanely in BRIN datetime_minmax_multi_ops indexes.
- Avoid calculation overflows in BRIN interval_minmax_multi_ops indexes with extreme interval values.
- Fix partition step generation and runtime partition pruning for hash-partitioned tables with multiple partition keys.
- Fix inconsistent rechecking of concurrently-updated rows during MERGE.
- Correctly identify the target table in an inherited UPDATE/DELETE/MERGE even when the parent table is excluded by constraints.
- Fix edge case in btree mark/restore processing of ScalarArrayOpExpr clauses.
- Fix intra-query memory leak in Memoize execution.
- Fix intra-query memory leak when a set-returning function repeatedly returns zero rows.
- Don't crash if cursor_to_xmlschema() is applied to a non-data-returning Portal.
- Fix improper sharing of origin filter condition across successive pg_logical_slot_get_changes() calls.
- Throw the intended error if pgrowlocks() is applied to a partitioned table.
- Handle invalid indexes more cleanly in assorted SQL functions.
- Avoid premature memory allocation failure with long inputs to to_tsvector().
- Fix over-allocation of the constructed tsvector in tsvectorrecv().
- Improve checks for corrupt PGLZ compressed data.
- Fix ALTER SUBSCRIPTION so that a commanded change in the run_as_owner option is actually applied.
- Fix bulk table insertion into partitioned tables.
- In COPY FROM, avoid evaluating column default values that will not be needed by the command.
- In COPY FROM, fail cleanly when an unsupported encoding conversion is needed.
- Avoid crash in EXPLAIN if a parameter marked to be displayed by EXPLAIN has a NULL boot-time value.
- Ensure we have a snapshot while dropping ON COMMIT DROP temp tables.
- Avoid improper response to shutdown signals in child processes just forked by system().
- Cope with torn reads of pg_control in frontend programs.
- Avoid torn reads of pg_control in relevant SQL functions.
- Fix “could not find pathkey item to sort” errors occurring while planning aggregate functions with ORDER BY or DISTINCT options.
- Avoid integer overflow when computing size of backend activity string array.
- Fix briefly showing inconsistent progress statistics for ANALYZE on inherited tables.
- Fix the background writer to report any WAL writes it makes to the statistics counters.
- Fix confusion about forced-flush behavior in pgstat_report_wal().
- Fix statistics tracking of temporary-table extensions.
- When track_io_timing is enabled, include the time taken by relation extension operations as write time.
- Track the dependencies of cached CALL statements, and re-plan them when needed.
- Avoid a possible pfree-a-NULL-pointer crash after an error in OpenSSL connection setup.
- Track nesting depth correctly when inspecting RECORD-type Vars from outer query levels.
- Track hash function and negator function dependencies of ScalarArrayOpExpr plan nodes.
- Fix error-handling bug in RECORD type cache management.
Treat out-of-memory failures as fatal while reading WAL.
- Fix possible recovery failure due to trying to allocate memory based on a bogus WAL record length field.
- Fix “could not duplicate handle” error occurring on Windows when min_dynamic_shared_memory is set above zero.
- Fix order of operations in GenericXLogFinish.
- Remove incorrect assertion in PL/Python exception handling.
- Fix pg_dump to dump the new run_as_owner option of subscriptions.
- Fix pg_restore so that selective restores will include both table-level and column-level ACLs for selected tables.
- Add logic to pg_upgrade to check for use of abstime, reltime, and tinterval data types.
- Avoid false “too many client connections” errors in pgbench on Windows.
- Fix vacuumdb's handling of multiple -N switches.
- Fix vacuumdb to honor its --buffer-usage-limit option in analyze-only mode.
- In contrib/amcheck, do not report interrupted page deletion as corruption.
- Fix failure of contrib/btree_gin indexes on interval columns, when an indexscan using the < or <= operator is performed.
- Add support for LLVM 16 and 17.
- Suppress assorted build-time warnings on recent macOS.
- When building contrib/unaccent's rules file, fall back to using python if --with-python was not given and make variable PYTHON was not set.