다음 기능은 a에 연결하는 것을 다룹니다.postgresql백엔드 서버. an
애플리케이션 프로그램은 여러 백엔드 연결을 열 수 있습니다
일회. (그렇게해야 할 이유 중 하나는 둘 이상의 액세스입니다.
토토 베이.) 각 연결은 A로 표시됩니다.pgconn객체, 함수에서 얻은 객체PQCONNECTDB
또는pqsetdblogin
. 이러한 기능은 그럴 것입니다
아마도없는 객체 포인터를 항상 반환하십시오.
할당하기에도 기억이 너무 적습니다pgconn개체. 그만큼PQSTATUS
함수를 선택하여 확인해야합니다
쿼리 전에 토토 베이이 성공적으로 이루어 졌는지 여부
토토 베이 객체를 통해 전송됩니다.
pqconnectdb
토토 베이 서버에 새로 연결됩니다.
pgconn *pqconnectdb (const char *conninfo);
이 기능은
문자열에서 가져온 매개 변수Conninfo. 같지 않은pqsetdblogin
아래에서 매개 변수 세트가 할 수 있습니다
기능 서명을 변경하지 않고 확장하십시오
이 기능 중 (또는 비 차단 아날로그)PQConnectStart
andPQConnectPoll
)는 새로 선호됩니다
응용 프로그램 프로그래밍.
전달 된 문자열은 모든 기본값을 사용하기 위해 비어있을 수 있습니다. 매개 변수 또는 하나 이상의 매개 변수를 포함 할 수 있습니다 중학교로 분리 된 설정. 각 매개 변수 설정입니다 형식으로키워드 = value. 동일한 부호 주변의 공간은 선택 사항입니다. 글을 쓰기 위해 빈 값 또는 공간이 포함 된 값으로 단일 따옴표, 예 :키워드 = 'a 값'. 값 내의 단일 따옴표 및 백 슬래시 백 슬래시로 탈출해야합니다.\ '및\\.
현재 인식 된 매개 변수 키 단어는 다음과 같습니다.
토토 베이할 호스트 이름.이것이 슬래시로 시작하면 UNIX- 도메인 커뮤니케이션을 지정합니다 TCP/IP 통신; 값은 이름입니다 소켓 파일이 저장되는 디렉토리. 그만큼 기본 행동host지정되지 않았습니다 소켓in/tmp(또는 모든 소켓 디렉토리는에 지정되었습니다.PostgreSQL건축). ~에 Unix-Domain 소켓이없는 기계는 기본입니다 연결하려면LocalHost.
토토 베이할 호스트의 숫자 IP 주소. 이것 표준 IPv4 주소 형식에 있어야합니다 (예 :172.28.40.9. 당신의 기계라면 IPv6을 지원하면 해당 주소를 사용할 수도 있습니다. TCP/IP 통신은 항상 비어있을 때 사용됩니다 이 매개 변수에 문자열이 지정되어 있습니다.
사용hostaddr대신host응용 프로그램을 허용합니다 호스트 이름 조회를 피하려면 중요 할 수 있습니다. 시간 제약이있는 응용 프로그램에서. 하지만, Kerberos 인증에는 호스트 이름이 필요합니다. 그만큼 따라서 다음 : ifhosthostaddr, 호스트 이름 조회가 발생합니다. 만약에hostaddr지정되어 있습니다 없이host, 값hostaddr리모컨을 제공합니다 주소. Kerberos가 사용되면 반대 이름 쿼리 Kerberos의 호스트 이름을 얻기 위해 발생합니다. 둘 다hostandhostaddr지정되어 있습니다.hostaddr리모컨을 제공합니다 주소; 의 값hostKerberos가 사용되지 않는 한 무시됩니다 이 값은 Kerberos 인증에 사용됩니다. (메모 그 인증이 실패 할 가능성이 높습니다libpq호스트 이름이 전달됩니다 기계의 이름이 아닙니다hostaddr.) 또한host보다는hostaddr를 식별하는 데 사용됩니다 연결~/.pgpass(참조젠 토토 : 문서 : 8.2 : 암호 파일).
호스트 이름 또는 호스트 주소가 없으면libpq연결됩니다 로컬 유닉스 도메인 소켓 사용; 또는 기계에서 유닉스 도메인 소켓이 없으면 시도 할 것입니다 연결LocalHost.
데이터베이스 이름. 기본값은 사용자 이름.
PostgreSQL사용자 연결할 이름. 기본값은 운영 체제를 실행하는 사용자의 이름 애플리케이션.
서버가 암호를 요구하는 경우 사용할 비밀번호 입증.
최대 연결 대기, 초 (as as 소수 정수 문자열). 제로 또는 지정되지 않았습니다 무기한 기다리는 것을 의미합니다. 사용하는 것이 좋습니다 2 초 미만의 시간 초과.
서버로 전송할 명령 줄 옵션.
무시했습니다 (이전에는 보내야 할 위치가 지정되었습니다 서버 디버그 출력).
이 옵션은 무엇인지 또는 무엇을 결정합니다 우선 순위 anSSL토토 베이은 서버와 협상됩니다. 거기 네 가지 모드입니다 :비활성화의지 암호화되지 않은 만 시도SSL토토 베이;허용첫 번째 시도 a 비SSL토토 베이, 그렇다면 실패하면 시도SSL토토 베이;선호(기본값) 협상, 먼저 시도SSL토토 베이, 그렇다면 실패, 정규 비 시도SSL토토 베이;요구만 시도 할 것입니다SSL토토 베이.
ifPostgreSQLis 옵션 사용 SSL 지원없이 컴파일요구동안 오류가 발생합니다 옵션허용and선호허용되지만libpq사실 시도 anSSL토토 베이.
이 옵션은에 찬성하여 더 이상 사용되지 않습니다sslmode설정.
1으로 설정된 경우, anSSL서버에 대한 연결은 다음과 같습니다 필수 (이것은에 해당합니다sslmode 요구 사항).libpq그런 다음 거부 할 것입니다 서버가 수락하지 않으면 연결SSL토토 베이. 만약에 0으로 설정 (기본값),libpq협상 할 것입니다 서버와의 토토 베이 유형 (sslmode 선호). 이 옵션은 사용할 수 있습니다 만약에PostgreSQLis SSL 지원으로 편집.
Kerberos 서비스 이름을 인증 할 때 사용할 수 있습니다 Kerberos 5의 경우 서비스 이름과 일치해야합니다 Kerberos의 서버 구성에 지정됩니다 성공하기위한 인증. (참조섹션 20.2.3.)
추가 매개 변수에 사용할 서비스 이름. 그것 서비스 이름을 지정pg_service.conf추가 보유 연결 매개 변수. 이것은 응용 프로그램을 허용합니다 서비스 이름 만 사용하여 연결 매개 변수 만 지정하십시오 중앙에서 유지 될 수 있습니다. 보다섹션 29.14.
매개 변수가 지정되지 않은 경우 해당 환경 변수 (참조섹션 29.12)가 확인되었습니다. 만약 환경 변수도 설정되지 않으며 표시됩니다 내장 기본값이 사용됩니다.
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
로그인및PWD매개 변수. 그것은 제공됩니다
아주 오래된 프로그램과의 역 호환성.
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
, 설명대로
아래에.
비 차단 토토 베이 요청을 시작하려면 전화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)
다시. 반대로, ifpqconnectpoll (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
.