
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.
v12.3 [Jul 3, 2020]
- Fix possible failure with GENERATED columns: If a GENERATED column's value is an exact copy of another column of the table (and it is a pass-by-reference data type), it was possible to crash or insert corrupted data into the table. While it would be rather pointless for a GENERATED expression to just duplicate another column, an expression using a function that sometimes returns its input unchanged could create the situation.
- Handle inheritance of generated columns better: When a table column is inherited during CREATE TABLE ... INHERITS, disallow changing any generation properties when the parent column is already marked GENERATED; but allow a child column to be marked GENERATED when its parent is not.
- Fix cross-column references in CREATE TABLE LIKE INCLUDING GENERATED: CREATE TABLE ... LIKE failed when trying to copy a GENERATED expression that references a physically-later column.
- Propagate ALTER TABLE ... SET STORAGE to indexes: Non-expression index columns have always copied the attstorage property of their table column at creation. Update them when ALTER TABLE ... SET STORAGE is done, to maintain consistency.
- Preserve the indisclustered setting of indexes rewritten by ALTER TABLE: Previously, ALTER TABLE lost track of which index had been used for CLUSTER.
- Preserve the replica identity properties of indexes rewritten by ALTER TABLE.
- Preserve the indisclustered setting of indexes rebuilt by REINDEX CONCURRENTLY.
- Lock objects sooner during DROP OWNED BY: This avoids failures in race-condition cases where another session is deleting some of the same objects.
- Fix error-case processing for CREATE ROLE ... IN ROLE: Some error cases would be reported as “unexpected node type” or the like, instead of the intended message.
- Ensure that when a partition is detached, any triggers cloned from its formerly-parent table are removed.
- Fix crash when COLLATE is applied to a non-collatable type in a partition bound expression.
- Ensure that unique indexes over partitioned tables match the equality semantics of the partitioning key: This would only be an issue with index opclasses that have unusual notions of equality, but it's wrong in theory, so check.
- Ensure that members of the pg_read_all_stats role can read all statistics views, as expected: The functions underlying the pg_stat_progress_* views had not gotten this memo.
- Repair performance regression in information_schema.triggers view: This patch redefines that view so that an outer WHERE clause constraining the table name can be pushed down into the view, allowing its calculations to be done only for triggers belonging to the table of interest rather than all triggers in the database. In a database with many triggers this would make a significant speed difference for queries of that form. Since things worked that way before v11, this is a potential performance regression. Users who find this to be a problem can fix it by replacing the view definition. or, perhaps, just deleting and reinstalling the whole information_schema schema).
- Repair performance regression in floating point overflow/underflow detection: Previous refactoring had resulted in isinf() being called extra times in some hot code paths.
- Fix full text search to handle NOT above a phrase search correctly: Queries such as !(foobar) failed to find matching rows when implemented as a GiST or GIN index search.
- Fix full text search for cases where a phrase search includes an item with both prefix matching and a weight restriction.
- Fix ts_headline() to make better headline selections when working with phrase queries.
- Fix bugs in gin_fuzzy_search_limit processing: A small value of gin_fuzzy_search_limit could result in unexpected slowness due to unintentionally rescanning the same index page many times. Another code path failed to apply the intended filtering at all, possibly returning too many values.
- Allow input of type circle to accept the format “(x,y),r” as the documentation says it does.
- Make the get_bit() and set_bit() functions cope with bytea strings longer than 256MB: Since the bit number argument is only int4, it's impossible to use these functions to access bits beyond the first 256MB of a long bytea. We'll widen the argument to int8 in v13, but in the meantime, allow these functions to work on the initial substring of a long bytea.
- Ignore file-not-found errors in pg_ls_waldir() and allied functions: This prevents a race condition failure if a file is removed between when we see its directory entry and when we attempt to stat() it.
- Avoid possibly leaking an open-file descriptor for a directory in pg_ls_dir(), pg_timezone_names(), pg_tablespace_databases(), and allied functions.
- Fix polymorphic-function type resolution to correctly infer the actual type of an anyarray output when given only an anyrange input.