Original author
Pavel Luzanov
Postgres Professional
11th edition · 2025 · PostgreSQL 17
Install a database, write your first SQL query, and connect an application. A practical introduction to PostgreSQL, one step at a time.
Authors and translators
Original author
Postgres Professional
Original author
Postgres Professional
Original author
Postgres Professional
Chinese translator
Codex-assisted translation and review
© Postgres Professional, 2016–2025. The English text and illustrations are reproduced from the 11th edition · PostgreSQL 17 PDF. This web edition keeps the original chapter order, examples, and version-specific behavior. Original page references link to their corresponding locations in the chapters.
These notes were added by the web edition after checking the supplied PDF against the PostgreSQL 17 documentation. The chapter text and examples retain the original wording. Chapter summaries and descriptive figure captions are also additions to aid navigation. Page numbers below refer to the printed book; the PDF page number is one higher.
In Logical replication, conflicting and invalidation_reason belong to pg_replication_slots. The source names pg_stat_replication in error. See the PostgreSQL 17 view definition.
In Access control, use sslnegotiation=direct together with sslmode=require, verify-ca, or verify-full. The source’s requiredirect is not a valid value. See the libpq connection parameters.
In Query planning and execution, the planner reorders GROUP BY keys, rather than tables, to use an available ordering. See enable_group_by_reordering.
The same section needs a qualification: a function using a subtransaction for error recovery may be explicitly marked PARALLEL SAFE when all its operations meet the safety requirements. Functions remain PARALLEL UNSAFE by default; an EXCEPTION block does not automatically make them safe. See CREATE FUNCTION.
In Miscellaneous, the utility option is --sync-method. The source spells it --synch-method. See the PostgreSQL 17 release notes.
In that section, an io_combine_limit value written without a unit is measured in database blocks, normally 8 kB each. It is not a raw byte count. The default is 128 kB. See io_combine_limit.
The upgrade description applies when the old cluster is PostgreSQL 17 or later. It does not promise preservation of logical slots and subscriptions when upgrading a pre-17 cluster to 17. See the PostgreSQL 17 release notes.
The repository command needs a space: $(lsb_release -cs). The PDF prints $(lsb_release-cs), which attempts to run a different command. The distribution list and apt-key workflow also reflect the original edition. For a new installation, follow the PostgreSQL project’s current Debian or Ubuntu instructions and select PostgreSQL 17 to match this book.
The original link at the end of Grouping returned HTTP 404 during this review. The displayed address preserves the source wording; its link now opens the PostgreSQL 17 GROUP BY reference. The original destination is recorded in the source manifest.