PostgreSQL 7.2 Programmer's Guide

The PostgreSQL Global Development Group


Table of Contents
Organization
I. Client Interfaces
1. libpq - C Library
1.1. Database Connection Functions
1.2. Query Execution Functions
1.3. Asynchronous Query Processing
1.4. Fast Path
1.5. Asynchronous Notification
1.6. Functions Associated with the COPY Command
1.7. libpq Tracing Functions
1.8. libpq Control Functions
1.9. Environment Variables
1.10. Threading Behavior
1.11. Example Programs
2. Large Objects
2.1. Historical Note
2.2. Implementation Features
2.3. Interfaces
2.4. Built in registered functions
2.5. Accessing Large Objects from LIBPQ
2.6. Sample Program
3. libpq++ - C++ Binding Library
3.1. Control and Initialization
3.2. libpq++ Classes
3.3. Database Connection Functions
3.4. Query Execution Functions
3.5. Asynchronous Notification
3.6. Functions Associated with the COPY Command
4. pgtcl - Tcl Binding Library
4.1. Commands
4.2. Examples
4.3. pgtcl Command Reference Information
5. libpgeasy - Simplified C Library
6. ecpg - Embedded SQL in C
6.1. Why Embedded SQL?
6.2. The Concept
6.3. How To Use ecpg
6.4. Limitations
6.5. Porting From Other RDBMS Packages
6.6. For the Developer
7. ODBC Interface
7.1. Background
7.2. Installation
7.3. Configuration Files
7.4. Windows Applications
7.5. ApplixWare
8. JDBC Interface
8.1. Setting up the JDBC Driver
8.2. Using the Driver
8.3. Issuing a Query and Processing the Result
8.4. Performing Updates
8.5. Using Large Objects
8.6. PostgreSQL Extensions to the JDBC API
8.7. Using the driver in a multi-threaded or a servlet environment
8.8. Further Reading
9. PyGreSQL - Python Interface
9.1. The pg Module
9.2. pg Module Functions
9.3. Connection object: pgobject
9.4. Database wrapper class: DB
9.5. Query result object: pgqueryobject
9.6. Large Object: pglarge
9.7. DB-API Interface
II. Server Programming
10. Architecture
10.1. Postgres Architectural Concepts
11. Extending SQL: An Overview
11.1. How Extensibility Works
11.2. The Postgres Type System
11.3. About the Postgres System Catalogs
12. Extending SQL: Functions
12.1. Query Language (SQL) Functions
12.2. Procedural Language Functions
12.3. Internal Functions
12.4. C Language Functions
12.5. Function Overloading
13. Extending SQL: Types
13.1. User-Defined Types
14. Extending SQL: Operators
14.1. Operator Optimization Information
15. Extending SQL: Aggregates
16. The Postgres Rule System
16.1. What is a Querytree?
16.2. Views and the Rule System
16.3. Rules on INSERT, UPDATE and DELETE
16.4. Rules and Permissions
16.5. Rules versus Triggers
17. Interfacing Extensions To Indexes
18. Index Cost Estimation Functions
19. GiST Indexes
20. Triggers
20.1. Trigger Creation
20.2. Interaction with the Trigger Manager
20.3. Visibility of Data Changes
20.4. Examples
21. Server Programming Interface
21.1. Interface Functions
21.2. Interface Support Functions
21.3. Memory Management
21.4. Visibility of Data Changes
21.5. Examples
III. Procedural Languages
22. Procedural Languages
22.1. Installing Procedural Languages
23. PL/pgSQL - SQL Procedural Language
23.1. Overview
23.2. Description
23.3. Trigger Procedures
23.4. Examples
23.5. Porting from Oracle PL/SQL
24. PL/Tcl - TCL Procedural Language
24.1. Overview
24.2. Description
25. PL/Perl - Perl Procedural Language
25.1. Building and Installing
25.2. Using PL/Perl
26. PL/Python - Python Procedural Language
26.1. Installation
26.2. Using
List of Tables
4-1. pgtcl Commands
11-1. Postgres System Catalogs
12-1. Equivalent C Types for Built-In Postgres Types
17-1. Index Schema
17-2. B-tree Strategies
23-1. Single Quotes Escaping Chart
List of Figures
10-1. How a connection is established
11-1. The major Postgres system catalogs
List of Examples
1-1. libpq Example Program 1
1-2. libpq Example Program 2
1-3. libpq Example Program 3
8-1. Processing a Simple Query in JDCB
8-2. Using the JDBC Large Object Interface
23-1. A PL/pgSQL Trigger Procedure Example
23-2. A Simple PL/pgSQL Function to Increment an Integer
23-3. A Simple PL/pgSQL Function to Concatenate Text
23-4. A PL/pgSQL Function on Composite Type
23-5. A Simple Function
23-6. A Function that Creates Another Function
23-7. A Procedure with a lot of String Manipulation and OUT Parameters