## 2. Difference between Postgres Pro Enterprise and PostgreSQL

Postgres Pro provides the most actual PostgreSQL version with some additional patches applied and extensions added. Mostly, these are patches already accepted by the PostgreSQL community and committed into PostgreSQL. Also there some patches and extensions developed by Postgres Professional. Users of Postgres Pro thus have early access to some important features and fixes.

Currently the difference between Postgres Pro Enterprise and PostgreSQL is the following:

- Performance improvement on multicore systems (buffer manager and locks optimization)
- Full text search improvements: phrase search, hunspell morphology, some dictionaries are bundled with distribution and can be enabled by a single SQL statement, shared_ispell allowing to store dictionaries in shared memory
- Covering indexes
- libicu support on all platforms, providing platform-independent sort for various locales
- pg_trgm module supporting fuzzy string comparison and substring search
- Improved pageinspect module provides access to internal data storage structure
- sr_plan module allows to save and restore query plans
- dump_stat module allowing to save and restore database statistics when dumping/restoring the database
- jsquery module provides a specific language for effective index-supported querying of JSONB data
- pg_variables module provides functions to work with variables of various types
- pg_pathman module provides optimized partitioning mechanism and functions to manage partitions
- pg_query_state module provides a facility to know the current state of query execution on working backend
- pg_probackup is a backup and recovery manager
- mchar module provides additional data type to compatibility with Microsoft SQL Server
- fulleq module provides additional equivalence operator to compatibility with Microsoft SQL Server
- fasttrun module provides transaction unsafe function to truncate temporary tables without growing pg_class size
- online_analyze module provides set of changes, which immediately update stats after INSERT, UPDATE, DELETE or SELECT INTO operations applied for affected tables
- plantuner module provides hits for planner, which can do disable or enable indexes for query execution
- Added k-nearest neighbors algorithm (KNN) for SP-GiST and B-tree (See Chapter 62)
- Added RUM index, based on GIN, as separate module (See Section F.57)
- WAL size has been reduced on `CREATE INDEX` operation in the GiST, GIN, SP-GiST
- Added timeout for idle sessions on the server side (See idle_session_timeout)
- Added SHA-2 algorithm for password encryption (See Section 20.3.2)
- Added page level compression (CFS) (See Chapter 33)
- Added support of autonomous transactions (See Chapter 16)
- Added new optional background worker to schedule tasks by rules (See pgpro_scheduler)
- Added support for relocatable tables (See pg_transfer)
- Extension pg_hint_plan has been added
- Transaction IDs on 64-bit platforms use 64-bit data type
- Lazy placement of temporary tables on disk
- Consistent read on standby servers (wait for WAL apply, see WAITLSN)
- Utility pg_repack has been added
- Added multimaster extension
- Added failover algorithm for libpq connections
- Added aqo extension for adaptive query optimization
- Implemented declarative syntax for partitioning. (See Section F.40.2.6.)
- Added mamonsu monitoring service, which is implemented as a Zabbix agent. (See mamonsu.)
- Added pg_wait_sampling extension for sampling-based statistics of wait events. With this extension, you can get an insight into the server activity, including the current wait events for all processes and background workers.
- pg_tsparser module is an alternative text search parser.
- `pg_shardman` module is an experimental extension that enables sharding, aiming for scalability and fault tolerance with transaction support. It provides best results for OLTP workloads.
- `in-memory` module enables you to store data in Postgres Pro shared memory.
- `vops` module enables vertical data model for Postgres Pro Enterprise. It can speed up OLAP queries with filtering and aggregation by times.

Postgres Pro Enterprise releases are following the PostgreSQL releases, though sometimes occur more frequently. The Postgres Pro Enterprise versioning scheme is based on the PostgreSQL one and has an additional decimal place.