# Chapter 34. libpq — C Library

Table of Contents

34.1. Database Connection Control Functions

34.1.1. Connection Strings

34.1.2. Parameter Key Words

34.2. Connection Status Functions

34.3. Command Execution Functions

34.3.1. Main Functions

34.3.2. Retrieving Query Result Information

34.3.3. Retrieving Other Result Information

34.3.4. Escaping Strings for Inclusion in SQL Commands

34.4. Asynchronous Command Processing

34.5. Pipeline Mode

34.5.1. Using Pipeline Mode

34.5.2. Functions Associated with Pipeline Mode

34.5.3. When to Use Pipeline Mode

34.6. Retrieving Query Results Row-by-Row

34.7. Canceling Queries in Progress

34.8. The Fast-Path Interface

34.9. Asynchronous Notification

34.10. Functions Associated with the COPY Command

34.10.1. Functions for Sending COPY Data

34.10.2. Functions for Receiving COPY Data

34.10.3. Obsolete Functions for COPY

34.11. Control Functions

34.12. Miscellaneous Functions

34.13. Notice Processing

34.14. Event System

34.14.1. Event Types

34.14.2. Event Callback Procedure

34.14.3. Event Support Functions

34.14.4. Event Example

34.15. Environment Variables

34.16. The Password File

34.17. The Connection Service File

34.18. LDAP Lookup of Connection Parameters

34.19. SSL Support

34.19.1. Client Verification of Server Certificates

34.19.2. Client Certificates

34.19.3. Protection Provided in Different Modes

34.19.4. SSL Client File Usage

34.19.5. SSL Library Initialization

34.20. Behavior in Threaded Programs

34.21. Building libpq Programs

34.22. Example Programs

libpq is the C application programmer's interface to PostgreSQL. libpq is a set of library functions that allow client programs to pass queries to the PostgreSQL backend server and to receive the results of these queries.

libpq is also the underlying engine for several other PostgreSQL application interfaces, including those written for C++, Perl, Python, Tcl and ECPG. So some aspects of libpq's behavior will be important to you if you use one of those packages. In particular, Section 34.15, Section 34.16 and Section 34.19 describe behavior that is visible to the user of any application that uses libpq.

Some short programs are included at the end of this chapter (Section 34.22) to show how to write programs that use libpq. There are also several complete examples of libpq applications in the directory src/test/examples in the source code distribution.

Client programs that use libpq must include the header file libpq-fe.h and must link with the libpq library.