Extending SQL
- Table of Contents
 - 35.1. How Extensibility Works
 - 35.2. The PostgreSQL Type System
 - 
    
- 35.2.1. Base Types
 - 35.2.2. Composite Types
 - 35.2.3. Domains
 - 35.2.4. Pseudo-Types
 - 35.2.5. Polymorphic Types
 
 - 35.3. User-defined Functions
 - 35.4. Query Language ( SQL ) Functions
 - 
    
- 35.4.1. Arguments for SQL Functions
 - 35.4.2. SQL Functions on Base Types
 - 35.4.3. SQL Functions on Composite Types
 - 35.4.4. SQL Functions with Output Parameters
 - 35.4.5. SQL Functions with Variable Numbers of Arguments
 - 35.4.6. SQL Functions with Default Values for Arguments
 - 35.4.7. SQL Functions as Table Sources
 - 35.4.8. SQL Functions Returning Sets
 - 35.4.9. SQL Functions Returning TABLE
 - 35.4.10. Polymorphic SQL Functions
 - 35.4.11. SQL Functions with Collations
 
 - 35.5. Function Overloading
 - 35.6. Function Volatility Categories
 - 35.7. Procedural Language Functions
 - 35.8. Internal Functions
 - 35.9. C-Language Functions
 - 
    
- 35.9.1. Dynamic Loading
 - 35.9.2. Base Types in C-Language Functions
 - 35.9.3. Version 0 Calling Conventions
 - 35.9.4. Version 1 Calling Conventions
 - 35.9.5. Writing Code
 - 35.9.6. Compiling and Linking Dynamically-loaded Functions
 - 35.9.7. Composite-type Arguments
 - 35.9.8. Returning Rows (Composite Types)
 - 35.9.9. Returning Sets
 - 35.9.10. Polymorphic Arguments and Return Types
 - 35.9.11. Transform Functions
 - 35.9.12. Shared Memory and LWLocks
 - 35.9.13. Using C++ for Extensibility
 
 - 35.10. User-defined Aggregates
 - 
    
- 35.10.1. Moving-Aggregate Mode
 - 35.10.2. Polymorphic and Variadic Aggregates
 - 35.10.3. Ordered-Set Aggregates
 - 35.10.4. Support Functions for Aggregates
 
 - 35.11. User-defined Types
 - 35.12. User-defined Operators
 - 35.13. Operator Optimization Information
 - 35.14. Interfacing Extensions To Indexes
 - 
    
- 35.14.1. Index Methods and Operator Classes
 - 35.14.2. Index Method Strategies
 - 35.14.3. Index Method Support Routines
 - 35.14.4. An Example
 - 35.14.5. Operator Classes and Operator Families
 - 35.14.6. System Dependencies on Operator Classes
 - 35.14.7. Ordering Operators
 - 35.14.8. Special Features of Operator Classes
 
 - 35.15. Packaging Related Objects into an Extension
 - 
    
- 35.15.1. Extension Files
 - 35.15.2. Extension Relocatability
 - 35.15.3. Extension Configuration Tables
 - 35.15.4. Extension Updates
 - 35.15.5. Extension Example
 
 - 35.16. Extension Building Infrastructure
 
In the sections that follow, we will discuss how you can extend the PostgreSQL SQL query language by adding:
- 
   
functions (starting in Section 35.3 )
 - 
   
aggregates (starting in Section 35.10 )
 - 
   
data types (starting in Section 35.11 )
 - 
   
operators (starting in Section 35.12 )
 - 
   
operator classes for indexes (starting in Section 35.14 )
 - 
   
packages of related objects (starting in Section 35.15 )