다음 루틴은 a와 연결을 다루고 있습니다.postgresql백엔드 서버. 그만큼
애플리케이션 프로그램은 여러 백엔드 토토 사이트을 열 수 있습니다
일회. (그렇게해야 할 이유 중 하나는 둘 이상의 액세스입니다.
데이터베이스.) 각 토토 사이트은 A로 표시됩니다.pgconn에서 얻은 객체pqconnectdb
또는pqsetdblogin
. 이러한 기능은 그럴 것입니다
아마도없는 객체 포인터를 항상 반환하십시오.
할당하기에도 기억이 너무 적습니다pgconn개체. 그만큼pqstatus
함수를 확인하도록 요청해야합니다
쿼리 전에 토토 사이트이 성공적으로 이루어 졌는지 여부
토토 사이트 객체를 통해 전송됩니다.
PQCONNECTDB
새로운 것을 만듭니다
데이터베이스 서버 토토 사이트.
pgconn *pqconnectdb (const char *conninfo)
이 루틴은
문자열에서 가져온 매개 변수Conninfo. 같지 않은pqsetdblogin
아래에서 매개 변수 세트가 할 수 있습니다
기능 서명을 변경하지 않고 확장하십시오
이 루틴 중 하나 또는 비 차단 아날로그PQConnectStart
andPQConnectPoll
응용 프로그램에 선호됩니다
프로그램 작성. 전달 된 문자열은 모두 비어있어 모든 것을 사용합니다
기본 매개 변수 또는 하나 이상의 매개 변수를 포함 할 수 있습니다.
공백으로 분리 된 설정.
각 매개 변수 설정은 양식에 있습니다keyword = value. (빈 값 또는 a를 작성하려면 공백을 포함하는 값, 단일 따옴표로 둘러싸고, 예 :keyword = 'value'. 하나의 값 내에 따옴표와 백 슬래시는 백 슬래시 (예 :\ '또는\\.) 동일 부호 주위의 공간은입니다 선택 과목. 현재 인식 된 매개 변수 키워드 이다:
연결할 호스트 이름. 이것이 시작되면 a 슬래시, 그것은 유닉스 도메인 커뮤니케이션을 지정합니다 TCP/IP 통신보다; 값은 이름입니다 소켓 파일이 저장되는 디렉토리. 그만큼 기본값은 Unix-Domain 소켓에 연결하는 것입니다./tmp.
연결할 호스트의 IP 주소. 이것은 들어와야합니다
BSD가 사용하는 표준 번호 및 점 양식
기능inet_aton
et
알. 0이 아닌 길이의 문자열이 지정된 경우 TCP/IP
의사 소통이 사용됩니다.
사용hostaddr대신 호스트는 응용 프로그램이 호스트 이름을 피할 수 있도록합니다 응용 프로그램에서 중요 할 수 있습니다 시간 제약. 그러나 Kerberos 인증 호스트 이름이 필요합니다. 따라서 다음 적용됩니다. 호스트가 지정된 경우hostaddr, 호스트 이름 조회가 강요됩니다. 만약에hostaddr지정되어 있습니다 호스트가 없으면hostaddr원격 주소를 제공합니다. 만약에 Kerberos가 사용되면 반대 이름 쿼리가 발생합니다. 만약에 호스트와hostaddr지정된 값hostaddr원격 주소를 제공합니다. 그만큼 Kerberos가 사용되지 않는 한 호스트 값은 무시됩니다. 이 값은 Kerberos에 사용됩니다 입증. 인증이있을 가능성이 있습니다 실패 iflibpqis 기계 이름이 아닌 호스트 이름을 전달했습니다. 에hostaddr.
호스트 이름 또는 호스트 주소가 없으면libpq연결됩니다 로컬 유닉스 도메인 소켓 사용.
서버 호스트에서 연결할 포트 번호 또는 Unix-Domain의 소켓 파일 이름 확장 사이.
데이터베이스 이름.
사용자 이름으로 연결합니다.
서버가 암호를 요구하는 경우 사용할 비밀번호 입증.
루틴을 연결하기 위해 주어진 초의 시간 공간. 영 또는 설정하지 않음은 무한을 의미합니다.
서버로 전송할 추적/디버그 옵션.
파일 또는tty백엔드에서 선택적인 디버그 출력.
요구하기 위해 1으로 설정SSL서버 토토 사이트.libpq그런 다음 거부 할 것입니다 서버가 수락하지 않으면 연결하려면SSL연결. 세트 서버와 협상하려면 0 (기본값). 이 옵션은입니다 사용 가능PostgreSQLSSL로 컴파일됩니다 지원하다.
매개 변수가 지정되지 않은 경우 해당 환경 변수 (참조섹션 1.10)가 확인되었습니다. 환경 변수가 설정되지 않은 경우 어느 쪽이든, 하드 유용 기본값이 사용됩니다. 반환 값은입니다 초록에 대한 포인터struct백엔드와의 토토 사이트을 나타냅니다.
pqsetdblogin
새로운 것을 만듭니다
데이터베이스 서버 토토 사이트.
pgconn *pqsetdblogin (const char *pghost, const char *pgport, const char *pgoptions, const char *pgtty, const char *dbname, const char *로그인, const char *pwd)
이것은의 전임자입니다.PQCONNECTDB
고정 된 수의
매개 변수이지만 동일한 기능.
pqsetdb
새로운 것을 만듭니다
데이터베이스 서버 토토 사이트.
pgconn *pqsetdb (char *pghost, char *pgport, char *pgoptions, char *pgtty, char *dbname)
이것은 호출하는 매크로입니다pqsetdblogin
로그인
andPWD
매개 변수. 주로 제공됩니다
오래된 프로그램과의 후진 호환성.
PQConnectStart
, pqconnectpoll
a
비 차단 방식.
PGCONN *PQCONNECTSTART (const char *conninfo)
PostGrespollingStatUstype PQConnectPoll (PGCONN *CONN)
이 두 루틴은 응용 프로그램의 스레드가되도록 데이터베이스 서버 그렇게하는 동안 원격 I/O에서 실행이 차단되지 않습니다.
데이터베이스 연결은 취한 매개 변수를 사용하여 이루어집니다
문자열에서Conninfo, 전달PQConnectStart
. 이 문자열입니다
위에서 설명한 것과 동일한 형식으로pqconnectdb
.
아니PQConnectStart
NORpqconnectpoll
많은 제한이 충족되는 한 :
thehostaddrand호스트매개 변수는 적절하게 사용됩니다
이름과 반대 이름 쿼리가 만들어지지 않도록하십시오.
아래 에서이 매개 변수의 문서를 참조하십시오PQCONNECTDB
위
세부.
전화하면pqtrace
,
추적하는 스트림 객체가
차단하지 않습니다.
당신은 소켓이
전화 전 적절한 상태pqconnectpoll
, 아래 설명 된대로.
시작하려면 전화conn = pqConnectStart ( "Connection_info_string"). 만약에conn
is null,libpq새로운 것을 할당 할 수 없었습니다pgconn구조. 그렇지 않으면, a
유효한pgconn포인터가 반환됩니다
(아직 유효한 토토 사이트을 나타내지는 않지만
데이터 베이스). 에서 돌아온시PQConnectStart
, Call상태 = pqstatus (conn). 상태와 같은 경우Connection_Bad, PQConnectStart
실패했습니다.
ifPQConnectStart
성공,
다음 단계는 투표하는 것입니다libpq토토 사이트 순서. 따라서 루프 : 토토 사이트 고려"비활성"기본적으로. 만약에PQConnectPoll
마지막 반품pgres_polling_active, 고려"Active"대신. 만약에pqconnectpoll (conn)
마지막 반품pgres_polling_reading, 수행 aselect ()
읽기pqsocket (conn)
. 마지막으로
반품pgres_polling_writing,
수행select ()
글쓰기
에pqsocket (conn)
. 당신이 있다면
아직 전화 할 것pqconnectpoll
, 즉
전화 후PQConnectStart
, 마치 마치 마치 마치 행동합니다
반품pgres_polling_writing. 만약에
그만큼select ()
소켓이 준비되어 있습니다. 고려"Active". 그것이 결정 되었다면 이것
토토 사이트은"Active", Callpqconnectpoll (conn)
다시. 만약에
이 호출은 반환pgres_polling_failed, 연결 절차
실패했습니다. 이 호출이 반환되는 경우pgres_polling_ok, 토토 사이트이 이루어졌습니다
성공적으로 만들었습니다.
사용에 유의하십시오.select ()
소켓이 준비되었는지 확인합니다
단지 (아마도) 예일뿐입니다. 다른 시설이있는 사람들
a와 같은 사용 가능poll ()
전화, 물론 대신 사용할 수 있습니다.
토토 사이트하는 동안 언제든지
전화를 통해 토토 사이트을 확인할 수 있습니다PQSTATUS
. 이것이 인 경우Connection_Bad, 그런 다음 연결 절차
실패했다. 이것이 인 경우Connection_ok
준비가 된. 이 상태 중 하나는 똑같이 감지 할 수 있어야합니다
의 반환 값에서pqconnectpoll
, 위와 같이. 다른 주가 5 월
비동기 연결 중에 (그리고 그리고 만) 보여집니다
절차. 이들은 연결의 현재 단계를 나타냅니다
절차, 사용자에게 피드백을 제공하는 데 유용 할 수 있습니다.
예를 들어. 이러한 상태에는 다음이 포함될 수 있습니다.
토토 사이트이 이루어지기를 기다리고 있습니다.
토토 사이트 확인; 보내기를 기다리고 있습니다.
서버에서 응답을 기다리고 있습니다.
인증을 받았습니다. 토토 사이트을 기다리고 있습니다 계속하기위한 스타트 업.
협상 환경 (토토 사이트의 일부 스타트 업).
비록이 상수가 남아있을 것입니다 호환성을 유지하려면 응용 프로그램이 의존해서는 안됩니다 특정 순서 또는 전혀 또는 상태는 항상 문서화 된 값 중 하나입니다. an 응용 프로그램은 다음과 같은 일을 할 수 있습니다 :
스위치 (pqstatus (conn)) Case Connection_Started : 피드백 = "연결 ..."; 부서지다; Case Connection_Made : 피드백 = "서버에 연결되어 ..."; 부서지다; . . . 기본: 피드백 = "연결 ...";
ifPQConnectStart
널 비 널 포인터를 반환하면 전화해야합니다pqfinish
당신이 그것을 끝내면, in
구조 및 관련 메모리 폐기 명령
블록. 전화를 걸더라도PQConnectStart
또는pqconnectpoll
실패.
pqconnectpoll
현재
블록 iflibpq편집되었습니다
와 함께use_ssl정의. 이것
앞으로 제한이 제거 될 수 있습니다.
이 기능은 소켓을 비 블로킹 상태로 남겨 둡니다.
만약에pqsetnonBlocking
라고 불리는.
pqconndefaults
반환
기본 연결 옵션.
pqconninfooption *pqconndefaults (void) 구조 pqconninfooption char *키워드; / * 옵션 키워드 */ char *envvar; / * 폴백 환경 변수 이름 */ char *편집; / * 기본값으로 컴파일 된 폴백 */ char *val; / * 옵션의 현재 값 또는 null */ 숯 *레이블; / * 연결 대화 상자에서 필드에 대한 레이블 */ char *dispchar; /*이 필드에 표시 할 문자 연결 대화 상자에서. 값은 다음과 같습니다. ""디스플레이가 그대로 입력되었습니다 "*"비밀번호 필드 - 값 숨기기 "D"디버그 옵션 - 기본적으로 표시하지 마십시오 */ int dispsize; / * 대화 상자의 문자의 필드 크기 */
연결 옵션 배열을 반환합니다. 이것은 익숙 할 수 있습니다
가능한 모든 결정PQCONNECTDB
옵션 및 현재
기본값. 반환 값은 배열을 가리 킵니다pqconninfooption structs는 null이있는 항목으로 끝납니다
키워드 포인터. 기본값 (val필드)는 환경에 따라 다릅니다
변수 및 기타 컨텍스트. 발신자는 치료해야합니다
연결 옵션 데이터는 읽기 전용입니다.
옵션 배열을 처리 한 후 전달하여 자유롭게 해방
에게PQCONNINFOFREE
. 이것이 있다면
완료되지 않은 경우, 각 호출마다 소량의 메모리가 유출됩니다pqconndefaults
.
inPostgreSQL버전
7.0 이전,pqconndefaults
동적으로 할당 된 배열. 그것은 스레드 안전이 아니 었습니다
행동이 바뀌 었습니다.
pqfinish
닫으십시오
백엔드 연결. 또한에 사용 된 메모리를 해방합니다.pgconnObject.
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
(위) 비 블로킹 방식으로 작용한다는 점에서. 이것들
기능은와 동일한 제한을 겪습니다.PQConnectStart
andPQCONNECTPOLL
.
CallPQRESETSTART
. 만약
반환 0, 재설정이 실패했다. 1을 반환하면 폴링하십시오
사용을 사용하여 재설정pqresetpoll
in
를 사용하여 연결을 생성하는 것과 정확히 같은 방식PQConnectPoll
.
libpq애플리케이션 프로그래머는 유지 관리에주의해야합니다pgconn추상화. 액세서를 사용하십시오 아래의 함수는의 내용을 얻는 것입니다.pgconn. 필드를 직접 참조하지 마십시오 의pgconn구조 미래에 변화가있을 수 있습니다. (시작PostgreSQL릴리스 6.4,의 정의Struct Pgconn|libpq-fe.h. 오래된 코드가 있다면 액세스pgconn직접 필드, 당신 를 포함하여 계속 사용할 수 있습니다libpq-int.h도 고치는 것이 좋습니다 곧 코드.)
PQDB
데이터베이스를 반환합니다
토토 사이트 이름.
char *pqdb (const pgconn *conn)
PQDB
그리고 다음 몇 가지
함수는 연결시 설정된 값을 반환합니다. 이것들
값은의 수명에 고정되어 있습니다.pgconn개체.
PQUSER
사용자 이름을 반환합니다
토토 사이트의.
char *pquser (const pgconn *conn)
pqpass
비밀번호를 반환합니다
토토 사이트의.
char *pqpass (const pgconn *conn)
pqhost
서버를 반환합니다
연결 호스트 이름.
char *pqhost (const pgconn *conn)
pqport
포트를 반환합니다
연결.
char *pqport (const pgconn *conn)
pqtty
디버그를 반환tty토토 사이트의.
char *pqtty (const pgconn *conn)
pqoptions
반환합니다
연결에 사용 된 백엔드 옵션.
char *pqoptions (const pgconn *conn)
PQSTATUS
상태를 반환합니다
토토 사이트의.
Connstatustype pqstatus (const pgconn *conn)
상태는 여러 값 중 하나 일 수 있습니다. 그러나만
이 중 두 개는 비동기 토토 사이트 외부에서 볼 수 있습니다.
절차 -Connection_ok또는Connection_Bad. 좋은 토토 사이트
데이터베이스에는 상태가 있습니다Connection_ok. 토토 사이트 시도가 실패합니다
상태에 의해 신호Connection_Bad.
일반적으로 OK 상태는까지 남아 있습니다.pqfinish
그러나 통신 실패
상태가로 변경 될 수 있습니다.Connection_Bad조기. 이 경우
응용 프로그램은 전화를 통해 복구하려고 시도 할 수 있습니다pqreset
.
입력 참조PQConnectStart
andPQConnectPoll
다른 지위와 관련하여
볼 수있는 코드.
PQERRORMESSAGE
오류 메시지를 가장 많이 반환합니다
최근 토토 사이트 작업에 의해 생성되었습니다.
char * pqerrormessage (const pgconn * conn);
거의 모든libpq함수가 설정됩니다PQERRORMESSAGE
실패하면.libpq컨벤션, a
비어 있지 않음PQERRORMESSAGE
의지
후행 뉴 라인 포함.
pqbackendpid
반환합니다
프로세스id34770_34826
int pqbackendpid (const pgconn *conn);
백엔드PIDis 디버깅 목적 및 알림과 비교에 유용합니다 메시지 (포함PID알림 백엔드). 주목하십시오 그만큼PIDa 로컬이 아닌 데이터베이스 서버 호스트에서 실행되는 프로세스 주인!
pqgetssl
사용 된 SSL 구조를 반환합니다
SSL이 사용되지 않는 경우 연결 또는 NULL.
ssl *pqgetssl (const pgconn *conn);
이 구조는 암호화 레벨을 확인하는 데 사용할 수 있습니다. 서버 인증서 등을 확인하십시오. SSL을 참조하십시오 이 구조에 대한 정보에 대한 문서.
정의해야합니다use_ssl순서대로 이 기능의 프로토 타입을 얻으려면. 이것도 할 것입니다 자동 포함SSL.HFromOpenSSL.