Chapter 34. Extending SQL
Table of Contents
- 34.1. How Extensibility Works- 34.2. The Postgres Pro Type System
- 34.3. User-defined Functions- 34.4. Query Language (SQL) Functions
- 34.4.1. Arguments for SQL Functions- 34.4.2. SQL Functions on Base Types
- 34.4.3. SQL Functions on Composite Types
- 34.4.4. SQL Functions with Output Parameters
- 34.4.5. SQL Functions with Variable Numbers of Arguments
- 34.4.6. SQL Functions with Default Values for Arguments
- 34.4.7. SQL Functions as Table Sources
- 34.4.8. SQL Functions Returning Sets
- 34.4.9. SQL Functions Returning
TABLE
- 34.4.10. Polymorphic SQL Functions
- 34.4.11. SQL Functions with Collations
- 34.4.2. SQL Functions on Base Types
 
- 34.4.1. Arguments for SQL Functions
- 34.5. Function Overloading- 34.6. Function Volatility Categories
- 34.7. Procedural Language Functions
- 34.8. Internal Functions
- 34.9. C-Language Functions
- 34.6. Function Volatility Categories
- 34.9.1. Dynamic Loading- 34.9.2. Base Types in C-Language Functions
- 34.9.3. Version 0 Calling Conventions
- 34.9.4. Version 1 Calling Conventions
- 34.9.5. Writing Code
- 34.9.6. Compiling and Linking Dynamically-loaded Functions
- 34.9.7. Composite-type Arguments
- 34.9.8. Returning Rows (Composite Types)
- 34.9.9. Returning Sets
- 34.9.10. Polymorphic Arguments and Return Types
- 34.9.11. Transform Functions
- 34.9.12. Shared Memory and LWLocks
- 34.9.13. Using C++ for Extensibility
- 34.9.2. Base Types in C-Language Functions
 
- 34.9.1. Dynamic Loading
- 34.10. User-defined Aggregates
- 34.11. User-defined Types- 34.12. User-defined Operators
- 34.13. Operator Optimization Information
- 34.12. User-defined Operators
- 34.14. Interfacing Extensions To Indexes
- 34.15. Packaging Related Objects into an Extension
- 34.16. Extension Building Infrastructure
In the sections that follow, we will discuss how you can extend the Postgres Pro SQL query language by adding:
- functions (starting in Section 34.3) 
- aggregates (starting in Section 34.10) 
- data types (starting in Section 34.11) 
- operators (starting in Section 34.12) 
- operator classes for indexes (starting in Section 34.14) 
- packages of related objects (starting in Section 34.15)