# Chapter 38. Extending SQL
Table of Contents
38.2. The PostgreSQL Type System
38.5. Query Language (SQL) Functions
38.5.1. Arguments for SQL Functions
38.5.2. SQL Functions on Base Types
38.5.3. SQL Functions on Composite Types
38.5.4. SQL Functions with Output Parameters
38.5.5. SQL Procedures with Output Parameters
38.5.6. SQL Functions with Variable Numbers of Arguments
38.5.7. SQL Functions with Default Values for Arguments
38.5.8. SQL Functions as Table Sources
38.5.9. SQL Functions Returning Sets
38.5.10. SQL Functions Returning TABLE
38.5.11. Polymorphic SQL Functions
38.5.12. SQL Functions with Collations
38.7. Function Volatility Categories
38.8. Procedural Language Functions
38.10.2. Base Types in C-Language Functions
38.10.3. Version 1 Calling Conventions
38.10.5. Compiling and Linking Dynamically-Loaded Functions
38.10.6. Composite-Type Arguments
38.10.7. Returning Rows (Composite Types)
38.10.9. Polymorphic Arguments and Return Types
38.10.10. Shared Memory and LWLocks
38.10.11. Using C++ for Extensibility
38.11. Function Optimization Information
38.12. User-Defined Aggregates
38.12.1. Moving-Aggregate Mode
38.12.2. Polymorphic and Variadic Aggregates
38.12.3. Ordered-Set Aggregates
38.12.5. Support Functions for Aggregates
38.15. Operator Optimization Information
38.16. Interfacing Extensions to Indexes
38.16.1. Index Methods and Operator Classes
38.16.2. Index Method Strategies
38.16.3. Index Method Support Routines
38.16.5. Operator Classes and Operator Families
38.16.6. System Dependencies on Operator Classes
38.16.8. Special Features of Operator Classes
38.17. Packaging Related Objects into an Extension
38.17.2. Extension Relocatability
38.17.3. Extension Configuration Tables
38.17.5. Installing Extensions Using Update Scripts
38.17.6. Security Considerations for Extensions
38.18. 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 38.3)
aggregates (starting in Section 38.12)
data types (starting in Section 38.13)
operators (starting in Section 38.14)
operator classes for indexes (starting in Section 38.16)
packages of related objects (starting in Section 38.17)