Part VII. Internals

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

Table of Contents

49. Overview of Postgres Pro Internals
49.1. The Path of a Query
49.2. How Connections are Established
49.3. The Parser Stage
49.4. The Postgres Pro Rule System
49.5. Planner/Optimizer
49.6. Executor
50. System Catalogs
50.1. Overview
50.2. pg_aggregate
50.3. pg_am
50.4. pg_amop
50.5. pg_amproc
50.6. pg_attrdef
50.7. pg_attribute
50.8. pg_authid
50.9. pg_auth_members
50.10. pg_cast
50.11. pg_class
50.12. pg_collation
50.13. pg_constraint
50.14. pg_conversion
50.15. pg_database
50.16. pg_db_role_setting
50.17. pg_default_acl
50.18. pg_depend
50.19. pg_description
50.20. pg_enum
50.21. pg_event_trigger
50.22. pg_extension
50.23. pg_foreign_data_wrapper
50.24. pg_foreign_server
50.25. pg_foreign_table
50.26. pg_index
50.27. pg_inherits
50.28. pg_init_privs
50.29. pg_language
50.30. pg_largeobject
50.31. pg_largeobject_metadata
50.32. pg_namespace
50.33. pg_opclass
50.34. pg_operator
50.35. pg_opfamily
50.36. pg_partitioned_table
50.37. pg_pltemplate
50.38. pg_policy
50.39. pg_proc
50.40. pg_publication
50.41. pg_publication_rel
50.42. pg_range
50.43. pg_replication_origin
50.44. pg_rewrite
50.45. pg_seclabel
50.46. pg_sequence
50.47. pg_shdepend
50.48. pg_shdescription
50.49. pg_shseclabel
50.50. pg_statistic
50.51. pg_statistic_ext
50.52. pg_subscription
50.53. pg_subscription_rel
50.54. pg_tablespace
50.55. pg_transform
50.56. pg_trigger
50.57. pg_ts_config
50.58. pg_ts_config_map
50.59. pg_ts_dict
50.60. pg_ts_parser
50.61. pg_ts_template
50.62. pg_type
50.63. pg_user_mapping
50.64. System Views
50.65. pg_available_extensions
50.66. pg_available_extension_versions
50.67. pg_config
50.68. pg_cursors
50.69. pg_file_settings
50.70. pg_group
50.71. pg_hba_file_rules
50.72. pg_indexes
50.73. pg_locks
50.74. pg_matviews
50.75. pg_policies
50.76. pg_prepared_statements
50.77. pg_prepared_xacts
50.78. pg_publication_tables
50.79. pg_replication_origin_status
50.80. pg_replication_slots
50.81. pg_roles
50.82. pg_rules
50.83. pg_seclabels
50.84. pg_sequences
50.85. pg_settings
50.86. pg_shadow
50.87. pg_stats
50.88. pg_tables
50.89. pg_timezone_abbrevs
50.90. pg_timezone_names
50.91. pg_user
50.92. pg_user_mappings
50.93. pg_views
51. Frontend/Backend Protocol
51.1. Overview
51.2. Message Flow
51.3. SASL Authentication
51.4. Streaming Replication Protocol
51.5. Logical Streaming Replication Protocol
51.6. Message Data Types
51.7. Message Formats
51.8. Error and Notice Message Fields
51.9. Logical Replication Message Formats
51.10. Summary of Changes since Protocol 2.0
52. Writing A Procedural Language Handler
53. Writing A Foreign Data Wrapper
53.1. Foreign Data Wrapper Functions
53.2. Foreign Data Wrapper Callback Routines
53.3. Foreign Data Wrapper Helper Functions
53.4. Foreign Data Wrapper Query Planning
53.5. Row Locking in Foreign Data Wrappers
54. Writing A Table Sampling Method
54.1. Sampling Method Support Functions
55. Writing A Custom Scan Provider
55.1. Creating Custom Scan Paths
55.2. Creating Custom Scan Plans
55.3. Executing Custom Scans
56. Genetic Query Optimizer
56.1. Query Handling as a Complex Optimization Problem
56.2. Genetic Algorithms
56.3. Genetic Query Optimization (GEQO) in Postgres Pro
56.4. Further Reading
57. Index Access Method Interface Definition
57.1. Basic API Structure for Indexes
57.2. Index Access Method Functions
57.3. Index Scanning
57.4. Index Locking Considerations
57.5. Index Uniqueness Checks
57.6. Index Cost Estimation Functions
58. Generic WAL Records
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
65.2. Multivariate Statistics Examples
65.3. Planner Statistics and Security