Internals

PostgreSQL 9.5.3 Documentation
Prev | Home |  | Next

# VII. Internals

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

Table of Contents
48. Overview of PostgreSQL Internals
  48.1. The Path of a Query
  48.2. How Connections are Established
  48.3. The Parser Stage
  48.4. The PostgreSQL Rule System
  48.5. Planner/Optimizer
  48.6. Executor
49. System Catalogs
  49.1. Overview
  49.2. `pg_aggregate`
  49.3. `pg_am`
  49.4. `pg_amop`
  49.5. `pg_amproc`
  49.6. `pg_attrdef`
  49.7. `pg_attribute`
  49.8. `pg_authid`
  49.9. `pg_auth_members`
  49.10. `pg_cast`
  49.11. `pg_class`
  49.12. `pg_collation`
  49.13. `pg_constraint`
  49.14. `pg_conversion`
  49.15. `pg_database`
  49.16. `pg_db_role_setting`
  49.17. `pg_default_acl`
  49.18. `pg_depend`
  49.19. `pg_description`
  49.20. `pg_enum`
  49.21. `pg_event_trigger`
  49.22. `pg_extension`
  49.23. `pg_foreign_data_wrapper`
  49.24. `pg_foreign_server`
  49.25. `pg_foreign_table`
  49.26. `pg_index`
  49.27. `pg_inherits`
  49.28. `pg_language`
  49.29. `pg_largeobject`
  49.30. `pg_largeobject_metadata`
  49.31. `pg_namespace`
  49.32. `pg_opclass`
  49.33. `pg_operator`
  49.34. `pg_opfamily`
  49.35. `pg_pltemplate`
  49.36. `pg_policy`
  49.37. `pg_proc`
  49.38. `pg_range`
  49.39. `pg_replication_origin`
  49.40. `pg_rewrite`
  49.41. `pg_seclabel`
  49.42. `pg_shdepend`
  49.43. `pg_shdescription`
  49.44. `pg_shseclabel`
  49.45. `pg_statistic`
  49.46. `pg_tablespace`
  49.47. `pg_transform`
  49.48. `pg_trigger`
  49.49. `pg_ts_config`
  49.50. `pg_ts_config_map`
  49.51. `pg_ts_dict`
  49.52. `pg_ts_parser`
  49.53. `pg_ts_template`
  49.54. `pg_type`
  49.55. `pg_user_mapping`
  49.56. System Views
  49.57. `pg_available_extensions`
  49.58. `pg_available_extension_versions`
  49.59. `pg_cursors`
  49.60. `pg_file_settings`
  49.61. `pg_group`
  49.62. `pg_indexes`
  49.63. `pg_locks`
  49.64. `pg_matviews`
  49.65. `pg_policies`
  49.66. `pg_prepared_statements`
  49.67. `pg_prepared_xacts`
  49.68. `pg_replication_origin_status`
  49.69. `pg_replication_slots`
  49.70. `pg_roles`
  49.71. `pg_rules`
  49.72. `pg_seclabels`
  49.73. `pg_settings`
  49.74. `pg_shadow`
  49.75. `pg_stats`
  49.76. `pg_tables`
  49.77. `pg_timezone_abbrevs`
  49.78. `pg_timezone_names`
  49.79. `pg_user`
  49.80. `pg_user_mappings`
  49.81. `pg_views`
50. Frontend/Backend Protocol
  50.1. Overview
  50.2. Message Flow
  50.3. Streaming Replication Protocol
  50.4. Message Data Types
  50.5. Message Formats
  50.6. Error and Notice Message Fields
  50.7. Summary of Changes since Protocol 2.0
51. PostgreSQL Coding Conventions
  51.1. Formatting
  51.2. Reporting Errors Within the Server
  51.3. Error Message Style Guide
52. Native Language Support
  52.1. For the Translator
  52.2. For the Programmer
53. Writing A Procedural Language Handler
54. Writing A Foreign Data Wrapper
  54.1. Foreign Data Wrapper Functions
  54.2. Foreign Data Wrapper Callback Routines
  54.3. Foreign Data Wrapper Helper Functions
  54.4. Foreign Data Wrapper Query Planning
  54.5. Row Locking in Foreign Data Wrappers
55. Writing A Table Sampling Method
  55.1. Sampling Method Support Functions
56. Writing A Custom Scan Provider
  56.1. Creating Custom Scan Paths
  56.2. Creating Custom Scan Plans
  56.3. Executing Custom Scans
57. Genetic Query Optimizer
  57.1. Query Handling as a Complex Optimization Problem
  57.2. Genetic Algorithms
  57.3. Genetic Query Optimization (GEQO) in PostgreSQL
  57.4. Further Reading
58. Index Access Method Interface Definition
  58.1. Catalog Entries for Indexes
  58.2. Index Access Method Functions
  58.3. Index Scanning
  58.4. Index Locking Considerations
  58.5. Index Uniqueness Checks
  58.6. Index Cost Estimation Functions
59. GiST Indexes
  59.1. Introduction
  59.2. Built-in Operator Classes
  59.3. Extensibility
  59.4. Implementation
  59.5. Examples
60. SP-GiST Indexes
  60.1. Introduction
  60.2. Built-in Operator Classes
  60.3. Extensibility
  60.4. Implementation
  60.5. Examples
61. GIN Indexes
  61.1. Introduction
  61.2. Built-in Operator Classes
  61.3. Extensibility
  61.4. Implementation
  61.5. GIN Tips and Tricks
  61.6. Limitations
  61.7. Examples
62. BRIN Indexes
  62.1. Introduction
  62.2. Built-in Operator Classes
  62.3. Extensibility
63. Database Physical Storage
  63.1. Database File Layout
  63.2. TOAST
  63.3. Free Space Map
  63.4. Visibility Map
  63.5. The Initialization Fork
  63.6. Database Page Layout
64. BKI Backend Interface
  64.1. BKI File Format
  64.2. BKI Commands
  64.3. Structure of the Bootstrap BKI File
  64.4. Example
65. How the Planner Uses Statistics
  65.1. Row Estimation Examples

Prev | Home | Next
postmaster |  | Overview of PostgreSQL Internals