Supported Versions: Current (17) / 16 / 15 / 14 / 13
Development Versions: devel
Unsupported versions: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4
This documentation is for an unsupported version of PostgreSQL.
You may want to view the same page for the current version, or one of the other supported versions listed above instead.

VII. Internals

This part contains assorted information that can be of use to PostgreSQL developers.

Table of Contents
41. Overview of PostgreSQL Internals
41.1. The Path of a Query
41.2. How Connections are Established
41.3. The Parser Stage
41.4. The PostgreSQL Rule System
41.5. Planner/Optimizer
41.6. Executor
42. System Catalogs
42.1. Overview
42.2. pg_aggregate
42.3. pg_am
42.4. pg_amop
42.5. pg_amproc
42.6. pg_attrdef
42.7. pg_attribute
42.8. pg_authid
42.9. pg_auth_members
42.10. pg_autovacuum
42.11. pg_cast
42.12. pg_class
42.13. pg_constraint
42.14. pg_conversion
42.15. pg_database
42.16. pg_depend
42.17. pg_description
42.18. pg_index
42.19. pg_inherits
42.20. pg_language
42.21. pg_largeobject
42.22. pg_listener
42.23. pg_namespace
42.24. pg_opclass
42.25. pg_operator
42.26. pg_pltemplate
42.27. pg_proc
42.28. pg_rewrite
42.29. pg_shdepend
42.30. pg_statistic
42.31. pg_tablespace
42.32. pg_trigger
42.33. pg_type
42.34. System Views
42.35. pg_group
42.36. pg_indexes
42.37. pg_locks
42.38. pg_prepared_xacts
42.39. pg_roles
42.40. pg_rules
42.41. pg_settings
42.42. pg_shadow
42.43. pg_stats
42.44. pg_tables
42.45. pg_user
42.46. pg_views
43. Frontend/Backend Protocol
43.1. Overview
43.2. Message Flow
43.3. Message Data Types
43.4. Message Formats
43.5. Error and Notice Message Fields
43.6. Summary of Changes since Protocol 2.0
44. PostgreSQL Coding Conventions
44.1. Formatting
44.2. Reporting Errors Within the Server
44.3. Error Message Style Guide
45. Native Language Support
45.1. For the Translator
45.2. For the Programmer
46. Writing A Procedural Language Handler
47. Genetic Query Optimizer
47.1. Query Handling as a Complex Optimization Problem
47.2. Genetic Algorithms
47.3. Genetic Query Optimization (GEQO) in PostgreSQL
47.4. Further Reading
48. Index Access Method Interface Definition
48.1. Catalog Entries for Indexes
48.2. Index Access Method Functions
48.3. Index Scanning
48.4. Index Locking Considerations
48.5. Index Uniqueness Checks
48.6. Index Cost Estimation Functions
49. GiST Indexes
49.1. Introduction
49.2. Extensibility
49.3. Implementation
49.4. Examples
49.5. Crash Recovery
50. Database Physical Storage
50.1. Database File Layout
50.2. TOAST
50.3. Database Page Layout
51. BKI Backend Interface
51.1. BKI File Format
51.2. BKI Commands
51.3. Structure of the Bootstrap BKI File
51.4. Example
52. How the Planner Uses Statistics
52.1. Row Estimation Examples