Part IV. Client Interfaces This part describes the client programming interfaces distributed with PostgreSQL. Each of these chapters can be read independently. There are many external programming interfaces for client programs that are distributed separately. They contain their own documentation (Appendix H lists some of the more popular ones). Readers of this part should be familiar with using SQL to manipulate and query the database (see Part II) and of course with the programming language of their choice. Table of Contents 32. libpq — C Library 32.1. Database Connection Control Functions 32.2. Connection Status Functions 32.3. Command Execution Functions 32.4. Asynchronous Command Processing 32.5. Pipeline Mode 32.6. Retrieving Query Results in Chunks 32.7. Canceling Queries in Progress 32.8. The Fast-Path Interface 32.9. Asynchronous Notification 32.10. Functions Associated with the COPY Command 32.11. Control Functions 32.12. Miscellaneous Functions 32.13. Notice Processing 32.14. Event System 32.15. Environment Variables 32.16. The Password File 32.17. The Connection Service File 32.18. LDAP Lookup of Connection Parameters 32.19. SSL Support 32.20. OAuth Support 32.21. Behavior in Threaded Programs 32.22. Building libpq Programs 32.23. Example Programs 33. Large Objects 33.1. Introduction 33.2. Implementation Features 33.3. Client Interfaces 33.4. Server-Side Functions 33.5. Example Program 34. ECPG — Embedded SQL in C 34.1. The Concept 34.2. Managing Database Connections 34.3. Running SQL Commands 34.4. Using Host Variables 34.5. Dynamic SQL 34.6. pgtypes Library 34.7. Using Descriptor Areas 34.8. Error Handling 34.9. Preprocessor Directives 34.10. Processing Embedded SQL Programs 34.11. Library Functions 34.12. Large Objects 34.13. C++ Applications 34.14. Embedded SQL Commands 34.15. Informix Compatibility Mode 34.16. Oracle Compatibility Mode 34.17. Internals 35. The Information Schema 35.1. The Schema 35.2. Data Types 35.3. information_schema_catalog_name 35.4. administrable_role_​authorizations 35.5. applicable_roles 35.6. attributes 35.7. character_sets 35.8. check_constraint_routine_usage 35.9. check_constraints 35.10. collations 35.11. collation_character_set_​applicability 35.12. column_column_usage 35.13. column_domain_usage 35.14. column_options 35.15. column_privileges 35.16. column_udt_usage 35.17. columns 35.18. constraint_column_usage 35.19. constraint_table_usage 35.20. data_type_privileges 35.21. domain_constraints 35.22. domain_udt_usage 35.23. domains 35.24. element_types 35.25. enabled_roles 35.26. foreign_data_wrapper_options 35.27. foreign_data_wrappers 35.28. foreign_server_options 35.29. foreign_servers 35.30. foreign_table_options 35.31. foreign_tables 35.32. key_column_usage 35.33. parameters 35.34. referential_constraints 35.35. role_column_grants 35.36. role_routine_grants 35.37. role_table_grants 35.38. role_udt_grants 35.39. role_usage_grants 35.40. routine_column_usage 35.41. routine_privileges 35.42. routine_routine_usage 35.43. routine_sequence_usage 35.44. routine_table_usage 35.45. routines 35.46. schemata 35.47. sequences 35.48. sql_features 35.49. sql_implementation_info 35.50. sql_parts 35.51. sql_sizing 35.52. table_constraints 35.53. table_privileges 35.54. tables 35.55. transforms 35.56. triggered_update_columns 35.57. triggers 35.58. udt_privileges 35.59. usage_privileges 35.60. user_defined_types 35.61. user_mapping_options 35.62. user_mappings 35.63. view_column_usage 35.64. view_routine_usage 35.65. view_table_usage 35.66. views