Supported Versions: Current (16) / 15 / 14 / 13 / 12
Development Versions: devel
Unsupported versions: 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 might be of use to PostgreSQL developers.

Table of Contents
44. Overview of PostgreSQL Internals
44.1. The Path of a Query
44.2. How Connections are Established
44.3. The Parser Stage
44.4. The PostgreSQL Rule System
44.5. Planner/Optimizer
44.6. Executor
45. System Catalogs
45.1. Overview
45.2. pg_aggregate
45.3. pg_am
45.4. pg_amop
45.5. pg_amproc
45.6. pg_attrdef
45.7. pg_attribute
45.8. pg_authid
45.9. pg_auth_members
45.10. pg_cast
45.11. pg_class
45.12. pg_constraint
45.13. pg_conversion
45.14. pg_database
45.15. pg_db_role_setting
45.16. pg_default_acl
45.17. pg_depend
45.18. pg_description
45.19. pg_enum
45.20. pg_foreign_data_wrapper
45.21. pg_foreign_server
45.22. pg_index
45.23. pg_inherits
45.24. pg_language
45.25. pg_largeobject
45.26. pg_largeobject_metadata
45.27. pg_namespace
45.28. pg_opclass
45.29. pg_operator
45.30. pg_opfamily
45.31. pg_pltemplate
45.32. pg_proc
45.33. pg_rewrite
45.34. pg_shdepend
45.35. pg_shdescription
45.36. pg_statistic
45.37. pg_tablespace
45.38. pg_trigger
45.39. pg_ts_config
45.40. pg_ts_config_map
45.41. pg_ts_dict
45.42. pg_ts_parser
45.43. pg_ts_template
45.44. pg_type
45.45. pg_user_mapping
45.46. System Views
45.47. pg_cursors
45.48. pg_group
45.49. pg_indexes
45.50. pg_locks
45.51. pg_prepared_statements
45.52. pg_prepared_xacts
45.53. pg_roles
45.54. pg_rules
45.55. pg_settings
45.56. pg_shadow
45.57. pg_stats
45.58. pg_tables
45.59. pg_timezone_abbrevs
45.60. pg_timezone_names
45.61. pg_user
45.62. pg_user_mappings
45.63. pg_views
46. Frontend/Backend Protocol
46.1. Overview
46.2. Message Flow
46.3. Streaming Replication Protocol
46.4. Message Data Types
46.5. Message Formats
46.6. Error and Notice Message Fields
46.7. Summary of Changes since Protocol 2.0
47. PostgreSQL Coding Conventions
47.1. Formatting
47.2. Reporting Errors Within the Server
47.3. Error Message Style Guide
48. Native Language Support
48.1. For the Translator
48.2. For the Programmer
49. Writing A Procedural Language Handler
50. Genetic Query Optimizer
50.1. Query Handling as a Complex Optimization Problem
50.2. Genetic Algorithms
50.3. Genetic Query Optimization (GEQO) in PostgreSQL
50.4. Further Reading
51. Index Access Method Interface Definition
51.1. Catalog Entries for Indexes
51.2. Index Access Method Functions
51.3. Index Scanning
51.4. Index Locking Considerations
51.5. Index Uniqueness Checks
51.6. Index Cost Estimation Functions
52. GiST Indexes
52.1. Introduction
52.2. Extensibility
52.3. Implementation
52.4. Examples
52.5. Crash Recovery
53. GIN Indexes
53.1. Introduction
53.2. Extensibility
53.3. Implementation
53.4. GIN tips and tricks
53.5. Limitations
53.6. Examples
54. Database Physical Storage
54.1. Database File Layout
54.2. TOAST
54.3. Free Space Map
54.4. Visibility Map
54.5. Database Page Layout
55. BKI Backend Interface
55.1. BKI File Format
55.2. BKI Commands
55.3. Structure of the Bootstrap BKI File
55.4. Example
56. How the Planner Uses Statistics
56.1. Row Estimation Examples