Extending SQL
In the sections that follow, we will discuss how you can extend the QHB SQL query language by adding:
- functions (starting in Section User-Defined Functions)
- aggregates (starting in Section User-Defined Aggregates)
- data types (starting in Section User-Defined Types)
- operators (starting in Section User-Defined Operators)
- operator classes for indexes (starting in Section Interfacing Extensions to Indexes)
- operator classes for indexes (starting in Section Packaging Related Objects into an Extension)
Table of Contents
- How Extensibility Works
- The QHB Type System
- User-Defined Functions
- User-Defined Procedures
- Query Language (SQL) Functions
- Arguments for SQL Functions
- SQL Functions on Base Types
- SQL Functions on Composite Types
- SQL Functions with Output Parameters
- SQL Procedures with Output Parameters
- SQL Functions with Variable Numbers of Arguments
- SQL Functions with Default Values for Arguments
- SQL Functions as Table Sources
- SQL Functions Returning Sets
- SQL Functions Returning TABLE
- Polymorphic SQL Functions
- SQL Functions with Collations
- Function Overloading
- Function Volatility Categories
- Procedural Language Functions
- Internal Functions
- Native Language Functions
- Dynamic Loading
- Base Types in Native Language Functions
- Version 1 Calling Conventions
- Writing Code
- Compiling and Linking Dynamically-Loaded Functions
- Composite-Type Arguments
- Returning Rows (Composite Types)
- Returning Sets
- Polymorphic Arguments and Return Types
- Shared Memory and LWLocks
- Using C++ for Extensibility
- Function Optimization Information
- User-Defined Aggregates
- User-Defined Types
- User-Defined Operators
- Operator Optimization Information
- Interfacing Extensions to Indexes
- Packaging Related Objects into an Extension
- Extension Building Infrastructure