| PostgreSQL 9.3.25 문서 | ||||
|---|---|---|---|---|
| 토토 핫 PostgreSQL : 문서 : 9.3 : 기타 함수 | PostgreSQL : 문서 : 9.3 : LIBPQ -C 토토 커뮤니티 | 31장.libpq- C 라이브러리 | PostgreSQL : 문서 : 9.3 : 메이저 토토 사이트 시스템 | |
서버에서 생성된 알림 및 경고 메시지는 쿼리 실행 함수에 의해 반환됩니다. 쿼리 실패. 대신 배트맨 토토 처리로 전달됩니다. 함수 및 실행은 핸들러 이후에 정상적으로 계속됩니다. 반환합니다. 기본 배트맨 토토 처리 기능은 메시지를 인쇄합니다.stderr, 하지만 애플리케이션이 재정의할 수 있음 자체 처리 기능을 제공하여 이 동작을 수행합니다.
역사적인 이유로 배트맨 토토 처리에는 두 가지 수준이 있습니다. 배트맨 토토 수신자와 배트맨 토토 처리자를 호출합니다. 기본값 동작은 알림 수신자가 알림 형식을 지정하고 인쇄를 위해 배트맨 토토 프로세서에 문자열을 보냅니다. 그러나 자체 배트맨 토토 수신자를 제공하기로 선택한 애플리케이션은 일반적으로 배트맨 토토 프로세서 계층을 무시하고 모든 작업을 수행합니다. 알림 수신자에서 작업하세요.
함수PQsetNoticeReceiver연결에 대한 현재 알림 수신자를 설정하거나 검사합니다.
개체. 마찬가지로,PQsetNoticeProcessor현재를 설정하거나 검사합니다.
통지 프로세서.
typedef void (*PQnoticeReceiver) (void *arg, const PGresult *res);
PQnotice수신기
PQsetNoticeReceiver(PGconn *conn,
PQnoticeReceiver 프로세스,
무효 *arg);
typedef void (*PQnoticeProcessor) (void *arg, const char *message);
PQnotice프로세서
PQsetNoticeProcessor(PGconn *conn,
PQnoticeProcessor 프로세스,
무효 *arg);
이러한 함수 각각은 이전 알림 수신자를 반환하거나 프로세서 함수 포인터를 생성하고 새 값을 설정합니다. 당신이 null 함수 포인터, 아무 작업도 수행되지 않지만 현재 포인터 반환됩니다.
서버로부터 알림이나 경고 메시지를 받은 경우, 또는
내부적으로 생성됨libpq,
통지 수신자 함수가 호출됩니다. 메시지는 다음과 같이 전달됩니다.
a의 형태PGRES_NONFATAL_ERROR PGresult. (이렇게 하면 수신자가 추출할 수 있습니다.
다음을 사용하는 개별 필드PQresultErrorField또는 사전 형식화된 완전한
메시지 사용PQresultErrorMessage.)
동일한 void 포인터가 전달되었습니다.PQsetNoticeReceiver또한 전달되었습니다. (이 포인터
필요한 경우 애플리케이션별 상태에 액세스하는 데 사용할 수 있습니다.)
기본 알림 수신자는 단순히 메시지를 추출합니다(사용PQresultErrorMessage) 및 통과
배트맨 토토 처리자에게.
배트맨 토토 처리자는 배트맨 토토 또는
텍스트 형식으로 제공되는 경고 메시지입니다. 문자열 텍스트가 전달됩니다.
메시지(후행 개행 포함)와 void 포인터
그것은 전달된 것과 동일합니다PQsetNoticeProcessor. (이 포인터는 사용할 수 있습니다
필요한 경우 애플리케이션별 상태에 액세스합니다.)
기본 알림 프로세서는 간단합니다:
정적 공허
defaultNoticeProcessor(void *arg, const char *message)
fprintf(stderr, "%s", 메시지);
통지 수신자 또는 처리자를 설정한 후에는 다음을 수행해야 합니다.
해당 함수는 다음 중 하나에 해당하는 한 호출될 수 있다고 예상합니다.PGconn객체 또는PGresult그것으로 만들어진 개체가 존재합니다. 생성 시
의PGresult, 그PGconn의 현재 알림 처리 포인터는 다음과 같습니다.
에 복사됨PGresult가능하다면
다음과 같은 함수에서 사용PQgetvalue.