PostgreSQL &version; Programmer's Guide The PostgreSQL Global Development Group &legal; Preface What's In This Book This book is for PostgreSQL application programmers. It is divided into three parts. The first part of this book describes the client programming interfaces distributed with PostgreSQL. Each of these chapters can be read independently. Note that there are many other programming interfaces for client programs that are distributed separately and contain their own documentation. Readers of the first part should be familiar with using SQL commands to manipulate and query the database (see the &cite-user;) and of course with the programming language that the interface uses. The second part of this book is about extending the server functionality with user-defined functions, data types, triggers, etc. These are advanced topics which should probably be approached only after all the other user documentation about PostgreSQL has been understood. The third part of this book described the available server-side programming languages. This information is related to the second part and is only useful to readers that have read at least the first few chapters thereof. This book covers PostgreSQL &version; only. For information on other versions, please read the documentation that accompanies that release. Client Interfaces This part of the manual is the description of the client-side programming interfaces and support libraries for various languages. &libpq; &lobj; &libpgtcl; &ecpg; &jdbc; &pygresql; Server Programming This second part of the manual explains the PostgreSQL approach to extensibility and describe how users can extend PostgreSQL by adding user-defined types, operators, aggregates, and both query language and programming language functions. After a discussion of the PostgreSQL rule system, we discuss the trigger and SPI interfaces. &arch-pg; &extend; &xfunc; &xtypes; &xoper; &xaggr; &rules; &xindex; &indexcost; &trigger; &spi; Procedural Languages This part documents the procedural languages available in the PostgreSQL distribution as well as general issues concerning procedural languages. &xplang; &plsql; &pltcl; &plperl; &plpython;