libpqC응용 프로그램 프로그래머의 인터페이스PostgreSQL. libpq는 일련의 라이브러리 기능입니다 클라이언트 프로그램이 쿼리를 전달하도록 허용PostgreSQL백엔드 서버 및 수신 이 쿼리의 결과.
libpq또한 기본입니다 기타 여러 엔진PostgreSQL응용 프로그램 인터페이스를 포함합니다 C ++, Perl, Python, TCL 및 용으로 작성된 것ECPG. 그래서의 일부 측면libpq의 행동이 중요합니다 해당 패키지 중 하나를 사용합니다. 특히,섹션 28.11, 섹션 28.12and섹션 28.14행동을 설명하십시오 사용하는 응용 프로그램의 사용자에게 표시libpq.
이 장의 끝에 일부 짧은 프로그램이 포함되어 있습니다. (PostgreSQL : 문서 : 8.1 : 젠 토토 프로그램) 방법을 보여줍니다 사용하는 프로그램 작성libpq. 의 몇 가지 완전한 예도 있습니다.libpq디렉토리의 응용 프로그램src/test/examples소스 코드에서 분포.
사용하는 클라이언트 프로그램libpq헤더 파일을 포함해야합니다libpq-fe.hlibpq도서관.
다음 기능은 a를 연결하는 것을 다룹니다.PostgreSQL백엔드 서버. an
응용 프로그램 프로그램에는 몇 가지 백엔드 연결이 열릴 수 있습니다
한 번에. (그렇게해야 할 이유 중 하나는 둘 이상의 액세스입니다.
데이터베이스.) 각 연결은 A로 표시됩니다.pgconn객체는 함수에서 얻은PQCONNECTDB
또는pqsetdblogin
. 이러한 기능은 그럴 것입니다
아마도없는 객체 포인터를 항상 반환하십시오
할당하기에도 기억이 너무 적습니다pgconn개체. 그만큼PQSTATUS
함수를 확인하도록 요청해야합니다
쿼리 전에 연결이 성공적으로 이루어 졌는지 여부
연결 객체를 통해 전송됩니다.
pqconnectdb
데이터베이스 서버에 새로운 연결을합니다.
pgconn *pqconnectdb (const char *conninfo);
이 기능은 새로운 데이터베이스 연결을 사용하여 열립니다
문자열에서 가져온 매개 변수Conninfo. 같지 않은pqsetdblogin
아래, 매개 변수 세트
기능 서명을 변경하지 않고 확장 할 수 있습니다.
따라서이 기능 사용 (또는 비 차단 아날로그PQConnectStart
andPQConnectPoll
)가 선호됩니다
새로운 응용 프로그램 프로그래밍 용.
전달 된 문자열은 모든 기본값을 사용하기 위해 비어있을 수 있습니다. 매개 변수 또는 하나 이상의 매개 변수를 포함 할 수 있습니다 중학교로 분리 된 설정. 각 매개 변수 설정 양식에 있습니다keyword = value. 동일한 부호 주변의 공간은 선택 사항입니다. 글을 쓰기 위해 빈 값 또는 공간을 포함하는 값을 둘러싸십시오 단일 따옴표 (예 :키워드 = '값'. 내에서 단일 따옴표와 백 슬래시 값은 백 슬래시로 탈출해야합니다.\ 'and\\.
현재 인식 된 매개 변수 키 단어는 다음과 같습니다.
무지개 토토할 호스트 이름.이것이 슬래시로 시작하면 UNIX- 도메인 커뮤니케이션을 지정합니다 TCP/IP 통신; 값은 이름입니다 소켓 파일이 저장되는 디렉토리. 그만큼 기본 행동host지정되지 않았습니다 소켓in/tmp(또는 모든 소켓 디렉토리는에 지정되었습니다.PostgreSQL건축). ~에 유닉스 도메인 소켓이없는 기계, 기본값 무지개 토토하는 것입니다LocalHost.
무지개 토토할 호스트의 숫자 IP 주소. 이것 표준 IPv4 주소 형식에 있어야합니다. 예 :172.28.40.9. 당신의 경우 기계는 IPv6을 지원하므로 사용할 수도 있습니다 구애. TCP/IP 통신은 언제든지 사용됩니다 이를 위해 비어 있지 않은 문자열이 지정됩니다 매개 변수.
사용hostaddr대신 의host허용 호스트 이름 조회를 피하기위한 응용 프로그램 시간 제약 조건이있는 응용 분야에서 중요합니다. 그러나 Kerberos 인증에는 호스트가 필요합니다 이름. 따라서 다음은 적용됩니다 : ifhost없이 지정 됨hostaddr, 호스트 이름 조회가 발생합니다. 만약에hostaddr지정host, 의 값hostaddr원격 주소를 제공합니다. Kerberos가 사용될 때, a 호스트 이름을 얻으려면 역 이름 쿼리가 발생합니다 Kerberos의 경우. 둘 다hostandhostaddrare 지정된 값hostaddr원격 주소를 제공합니다. 의 값hostis Kerberos가 사용되지 않는 한 무시됩니다 이 값은 Kerberos 인증에 사용됩니다. (인증이 실패 할 가능성이 높습니다libpq가 통과되었습니다 기계 이름이 아닌 호스트 이름 athostaddr.) 또한host보다는hostaddr익숙합니다 의 무지개 토토 식별~/.pgpass(참조섹션 28.12).
호스트 이름 또는 호스트 주소가 없으면libpq연결됩니다 로컬 유닉스 도메인 소켓 사용; 또는 기계에서 유닉스 도메인 소켓이 없으면 시도 할 것입니다 연결LocalHost.
데이터베이스 이름. 기본값은 동일합니다 the user name.
PostgreSQL사용자 연결할 이름. 기본값은 운영 체제를 실행하는 사용자의 이름 애플리케이션.
서버가 요구하는 경우 사용할 비밀번호 암호 인증.
최대 연결 대기 초과 초 (쓰기 소수 정수 문자열로). 제로 또는 지정되지 않았습니다 무기한 기다리는 것을 의미합니다. 권장되지 않습니다 2 초 미만의 시간 초과 사용.
명령 줄 옵션으로 전송됩니다 섬기는 사람.
무시했습니다 (이전에는 보내야 할 위치가 지정되었습니다 서버 디버그 출력).
이 옵션은 무엇인지 또는 무엇을 결정합니다 우선 순위 anSSL무지개 토토은 서버와 협상됩니다. 네 가지 모드가 있습니다 :비활성화만 시도합니다 암호화되지 않은SSL무지개 토토;허용의지 협상, 먼저 비 시도SSL무지개 토토, 그렇다면 실패, 시도SSL무지개 토토;선호(기본값)는 협상됩니다. 먼저 시도SSL무지개 토토, 그렇다면 실패, 정규 비 시도SSL무지개 토토;요구만 시도 할 것입니다SSL무지개 토토.
ifPostgreSQL옵션을 사용하여 SSL 지원없이 컴파일됩니다요구옵션 중에 오류허용및선호받아 들여지지만libpq실제로 시도하지 않을 것입니다SSL무지개 토토.
이 옵션은에 찬성하여 더 이상 사용되지 않습니다sslmode설정.
1으로 설정된 경우, anSSL서버에 대한 무지개 토토입니다 필수 (이것은에 해당합니다sslmode 요구).libpq그런 다음 거부 할 것입니다 서버가 수락하지 않으면 연결SSL무지개 토토. 0으로 설정된 경우 (기본값),libpq협상 할 것입니다 서버와의 무지개 토토 유형 (sslmode 선호). 이 옵션은 전용입니다 사용 가능PostgreSQLSSL 지원.
인증시 사용할 Kerberos 서비스 이름 Kerberos 5의 경우 서비스 이름과 일치해야합니다 Kerberos의 서버 구성에 지정됩니다 성공하기위한 인증. (참조섹션 20.2.3.)
추가 매개 변수에 사용할 서비스 이름. 에서 서비스 이름을 지정합니다pg_service.conf추가 연결 매개 변수. 이것은 허용합니다 서비스 이름 만 지정하는 응용 프로그램 연결 매개 변수를 중앙에서 유지할 수 있습니다. 보다PostgreSQL : 문서 : 8.1 : 토토.
매개 변수가 지정되지 않은 경우 해당 환경 변수 (참조섹션 28.11)가 확인됩니다. 만약 환경 변수는 설정되지 않으며 그 다음에 설정되지 않습니다 표시된 내장 기본값이 사용됩니다.
pqsetdblogin
데이터베이스 서버에 새로운 연결을합니다.
pgconn *pqsetdblogin (const char *pghost, const char *pgport, const char *pgoptions, const char *pgtty, const char *dbname, const char *로그인, const char *pwd);
이것은의 전임자입니다.PQCONNECTDB
고정 된 세트가 있습니다
매개 변수. 그 기능을 제외하고는 동일한 기능이 있습니다
누락 된 매개 변수는 항상 기본값을 사용합니다.
쓰다NULL또는 빈 문자열
고정 된 매개 변수 중 하나
기본값.
PQSETDB
데이터베이스 서버에 새로운 연결을합니다.
pgconn *pqsetdb (char *pghost, char *pgport, char *pgoptions, char *pgtty, char *dbname);
이것은 호출하는 매크로입니다pqsetdblogin
로그인andPWD매개 변수. 그것은 제공됩니다
아주 오래된 프로그램과의 역 호환성.
PQConnectStart
pqconnectpoll
PGCONN *PQCONNECTSTART (const char *conninfo);
PostGrespollingStatUstype PQConnectPoll (PGCONN *CONN);
이 두 기능은
응용 프로그램의 스레드가되도록 데이터베이스 서버
그렇게하는 동안 원격 I/O에서 실행이 차단되지 않습니다.
이 접근법의 요점은 I/O가 대기한다는 것입니다.
오히려 애플리케이션의 기본 루프에서 완료가 발생할 수 있습니다
내부 아래에서PQCONNECTDB
이므로 응용 프로그램이 가능합니다
이 작업을 다른 작업과 병렬로 관리하십시오
활동.
데이터베이스 연결은 매개 변수를 사용하여 이루어집니다
문자열에서 가져온Conninfo,
전달PQConnectStart
.
이 문자열은 위에서 설명한 것과 동일한 형식입니다.PQCONNECTDB
.
아니PQConnectStart
NORpqconnectpoll
의지
여러 제한이 충족되는 한 블록,
thehostaddrandhost매개 변수가 사용됩니다
그 이름과 반대 이름을 보장하기 위해 적절하게
쿼리는 만들어지지 않습니다. 이 문서를 참조하십시오
아래의 매개 변수PQCONNECTDB
위의 자세한 내용은
전화하면pqtrace
,
스트림 객체가 추적하는지 확인하십시오
차단하지 않을 것입니다.
소켓이 적절한 지 확인하십시오
전화 전 상태PQConnectPoll
31495_31532
비 차단 무지개 토토 요청을 시작하려면 전화conn = pqConnectStart ( "Connection_info_string"). 만약에connlibpq할당 할 수 없었습니다
새로운pgconn구조.
그렇지 않으면 유효한pgconn포인터가 반환되었습니다 (아직 유효한 것을 나타내지는 않지만
데이터베이스 연결). 에서 돌아온시PQConnectStart
, Call상태 = pqstatus (conn). 만약에상태equalsConnection_Bad, PQConnectStart
실패했습니다.
ifPQConnectStart
성공, 다음 단계는 투표하는 것입니다libpq진행할 수 있습니다
연결 순서. 사용pqsocket (conn)
설명자를 얻으려면
데이터베이스 연결의 기본 소켓 고리
따라서 : ifpqconnectpoll (conn)
마지막 반품pgres_polling_reading, 기다릴 때까지 기다리십시오
소켓은 읽을 준비가되었습니다 (select ()
, poll ()
또는 유사한 시스템 기능).
그런 다음 호출pqconnectpoll (conn)
다시. 거꾸로,
만약에pqconnectpoll (conn)
마지막
반품pgres_polling_writing,
소켓이 쓸 준비가 될 때까지 기다렸다가 전화PQConnectPoll (Conn)
다시.
아직 전화하지 않은 경우PQConnectPoll
, 즉, 바로 다음
전화PQConnectStart
,
마지막으로 반환 된 것처럼 행동pgres_polling_writing. 이 루프를 계속하십시오
까지PQCONNECTPOLL (CONN)
반환pgres_polling_failed,
무지개 토토 절차가 실패했거나pgres_polling_ok,
무지개 토토이 성공적으로 이루어졌습니다.
언제든지 무지개 토토하는 동안 언제든지
전화를 통해 무지개 토토을 확인할 수 있습니다PQSTATUS
. 이것이주는 경우Connection_Bad그런 다음 연결
절차가 실패했습니다. 주는 경우Connection_ok
, 그러면 연결이 있습니다
준비가 된. 이 두 상태는 모두 똑같이 감지 할 수 있습니다
의 반환 값pqconnectpoll
, 위에서 설명합니다. 다른
상태는 AN에서 발생할 수 있습니다
비동기 연결 절차. 이것들은
연결 절차의 현재 단계
예를 들어 사용자에게 피드백을 제공하는 데 유용합니다. 이것들
상태는 :
무지개 토토이 이루어지기를 기다리고 있습니다.
무지개 토토 확인; 보내기를 기다리고 있습니다.
서버에서 응답을 기다리고 있습니다.
인증을 받았습니다. 백엔드를 기다리고 있습니다 마무리 시작.
SSL 암호화 협상.
환경 중심 매개 변수 협상 설정.
이 상수는 여전히 남아 있지만 (in 호환성을 유지하기 위해), 응용 프로그램이어야합니다 특정 순서로 발생하지 않거나 전혀, 또는 상태가 항상 이들 중 하나입니다. 문서화 된 값. 응용 프로그램은 같은 일을 할 수 있습니다 이것:
스위치 (pqstatus (conn)) Case Connection_Started : 피드백 = "연결 ..."; 부서지다; Case Connection_Made : 피드백 = "서버에 연결되어 ..."; 부서지다; . . . 기본: 피드백 = "연결 ...";
theConnect_Timeout사용 할 때 연결 매개 변수가 무시됩니다PQConnectPoll
; 응용 프로그램입니다
과도한 양의 양을 결정해야 할 책임
시간이 경과했습니다. 그렇지 않으면,PQConnectStart
뒤 따르는PQConnectPoll
루프입니다
동등한PQCONNECTDB
.
ifPQConnectStart
널을 반환합니다
포인터, 전화해야pqfinish
당신이 그것을 끝내면,
구조와 관련된 구조를 폐기하기 위해
메모리 블록. 무지개 토토하더라도 수행해야합니다
시도는 실패하거나 포기됩니다.
pqconndefaults
기본 연결 옵션을 반환합니다.
pqconninfooption *pqconndefaults (void); typedef struct char *키워드; / * 옵션 키워드 */ char *envvar; / * 폴백 환경 변수 이름 */ char *편집; / * 기본값으로 컴파일 된 폴백 */ char *val; / * 옵션의 현재 값 또는 null */ 숯 *레이블; / * 연결 대화 상자에서 필드에 대한 레이블 */ char *dispchar; /*이 필드에 표시 할 문자 연결 대화 상자에서. 값은 다음과 같습니다. ""디스플레이가 그대로 입력되었습니다 "*"비밀번호 필드 - 값 숨기기 "D"디버그 옵션 - 기본적으로 표시하지 마십시오 */ int dispsize; / * 대화 상자의 문자의 필드 크기 */ pqconninfooption;
연결 옵션 배열을 반환합니다. 이것은 사용될 수 있습니다
가능한 모든 결정PQCONNECTDB
옵션 및 현재
기본값. 반환 값은 배열을 가리 킵니다pqconninfooption구조,
널이있는 항목으로 끝납니다키워드포인터. 널 포인터는입니다
메모리를 할당 할 수없는 경우 반환되었습니다. 주목하십시오
현재 기본값 값 (val필드)는 환경 변수 및 기타에 따라 다릅니다
문맥. 발신자는 연결 옵션 데이터를 처리해야합니다
읽기 전용으로.
옵션 배열을 처리 한 후 전달하여 자유롭게 해방하십시오PQCONNINFOFREE
. 만약에
이것은 완료되지 않았으며 소량의 메모리가 유출됩니다.
각 전화pqconndefaults
.
pqfinish
서버 연결을 닫습니다. 또한 메모리를 해방시킵니다 에 의해 사용PGCONN개체.
void pqfinish (pgconn *conn);
서버 무지개 토토 시도가 실패하더라도 주목하십시오
(에 표시된대로PQSTATUS
),
신청서는 전화해야pqfinish
pgconn개체. 그만큼pgconn포인터를 다시 사용해서는 안됩니다
후에pqfinish
라고 불리는.
pqreset
통신 채널을 서버로 재설정합니다.
void pqreset (pgconn *conn);
이 기능은 서버에 대한 연결을 닫습니다 그리고 같은 새로운 연결을 다시 설정하려고 이전에 사용한 동일한 매개 변수를 모두 사용하는 서버. 작동하는 경우 오류 복구에 유용 할 수 있습니다. 연결 손실.
PQRESETSTART
pqresetpoll
통신 채널을 서버로 재설정하십시오 비 차단 방식.
int pqresetstart (pgconn *conn);
PostGrespollingStatusType PQRESETPOLL (PGCONN *CONN);
이 함수는 연결을 닫습니다
서버와 새로운 연결을 다시 설정하려고
이전에 동일한 매개 변수를 모두 사용하는 동일한 서버
사용된. 작동하는 경우 오류 복구에 유용 할 수 있습니다.
연결이 손실됩니다. 그들은 다릅니다pqreset
(위) a
비 차단 방식. 이러한 기능은 동일하게 고통받습니다
제한PQConnectStart
andPQConnectPoll
.
무지개 토토 재설정을 시작하려면 CallPQRESETSTART
. 0을 반환하면
재설정이 실패했습니다. 1을 반환하면를 사용하여 재설정을 폴링합니다pqresetpoll
정확히
를 사용하여 연결을 생성하는 것과 마찬가지로PQConnectPoll
.