지원되는 버전 :현재 (17) /16 / 15 / 14 / 13
개발 버전 :Devel
지원되지 않은 버전 :12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4
이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다현재버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

42.2. 메이저 토토 사이트 흐름

이 섹션은 메이저 토토 사이트 흐름과 의미를 설명합니다. 각 메이저 토토 사이트 유형.섹션 42.4.)에 따라 몇 가지 다른 하위 프로토콜이 있습니다 연결 상태 : 시작, 쿼리, 기능 호출,copy및 종료. 또한 있습니다

42.2.1. 스타트 업

세션을 시작하려면 프론트 엔드는 서버 및 시작 메이저 토토 사이트를 보냅니다.pg_hba.conf) 여부를 결정합니다 연결은 잠정적으로 수용 가능하며 추가 추가

서버는 적절한 인증 요청을 보냅니다 프론트 엔드가 적절한

인증주기는 서버로 끝납니다 연결 시도 (ErrorResponse)를 거부하거나 보내기

이 단계에서 서버의 가능한 메시지는 다음과 같습니다.

ErrorResponse

연결 시도가 거부되었습니다. 서버

Authenticationok

인증 교환이 성공적으로 이루어집니다 완전한.

AuthenticationKerberoSv4

프론트 엔드는 이제 Kerberos v4에 참여해야합니다. 인증 대화 상자 (여기에 설명되지 않음, 일부

AuthenticationKerberOSV5

프론트 엔드는 이제 Kerberos v5에 참여해야합니다. 인증 대화 상자 (여기에 설명되지 않음, 일부

AuthenticationClearTextPassword

프론트 엔드는 이제 PasswordMessage를 보내야합니다 Clear-Text 양식으로 비밀번호를 포함합니다.

AuthenticationCryptPassword

프론트 엔드는 이제 PasswordMessage를 보내야합니다 Crypt (3)를 통해 암호화 된 암호를 포함합니다

AuthenticationMd5password

프론트 엔드는 이제 passwordmessage를 보내야합니다 MD5를 통해 암호화 된 암호를 포함합니다

authenticationscmcredential

이 응답은 로컬 유닉스 도메인에 대해서만 가능합니다 SCM 자격 증명을 지원하는 플랫폼의 연결

프론트 엔드가 인증 방법을 지원하지 않는 경우 서버에서 요청한 다음 즉시 닫아야합니다.

Authenticationok을받은 후, 프론트 엔드는해야합니다 서버에서 추가 메시지를 기다립니다.

이 단계에서 백엔드는 어떤 적용을 적용하려고 시도합니다. 추가 런타임 매개 변수 설정에 제공된 추가 런타임 매개 변수 설정

이 단계에서 백엔드의 가능한 메이저 토토 사이트 이다:

BackendKeyData

이 메이저 토토 사이트는 비밀 키 데이터를 제공합니다 취소를 발행하려면 프론트 엔드를 저장해야합니다.

Parameterstatus

이 메시지는 현재에 대한 프론트 엔드를 알려줍니다 (초기) 백엔드 매개 변수 설정 (예 :client_encoding또는Datestyle. 그만큼섹션 42.2.6자세한 내용은. 프론트 엔드는 이에 응답해서는 안됩니다

ReadyForquery

스타트 업이 완료되었습니다. 프론트 엔드는 이제 발행 될 수 있습니다

ErrorResponse

스타트 업 실패. 연결이 닫힙니다

NoticerEsponse

경고 메이저 토토 사이트가 발행되었습니다. 프론트 엔드

ReadyForquery 메시지는 백엔드와 동일합니다. 각 명령주기 후에 발행됩니다.

42.2.2. 간단한 쿼리

간단한 쿼리주기는 프론트 엔드를 통해 시작됩니다. 백엔드에 대한 쿼리 메이저 토토 사이트.

백엔드의 가능한 응답 메시지는 다음과 같습니다.

CommandComplete

정상적으로 완료된 SQL 명령.

CopyInResponse

백엔드는 프론트 엔드에서 데이터를 복사 할 준비가되었습니다. 테이블;섹션 42.2.5.

CopyOUtResponse

백엔드는 테이블에서 데이터를 복사 할 준비가되었습니다. 프론트 엔드;섹션 42.2.5.

RowDescription

행이 반환 될 것임을 나타냅니다 A에 대한 응답select, fetch등 쿼리. 이것의 내용

Datarow

a에 의해 반환 된 행 세트 중 하나입니다.select, fetch, 등 쿼리.

emptyQueryResponse

빈 쿼리 문자열이 인식되었습니다.

ErrorResponse

오류가 발생했습니다.

ReadyForquery

쿼리 문자열의 처리가 완료되었습니다. 별도

NoticerEsponse

경고 메이저 토토 사이트가 질문.

A에 대한 응답select쿼리 (또는 와 같은 행을 반환하는 다른 쿼리설명또는show) 일반적으로 rowdescription, 0 이상의 Datarow로 구성됩니다copyFrontend는 특별한 스페셜을 호출합니다 에 설명 된 프로토콜섹션 42.2.5. 모두

쿼리 문자열에는 여러 쿼리가 포함될 수 있으므로 (세미콜론으로 분리), 그러한 반응이 몇 가지있을 수 있습니다

완전히 비어있는 경우 (공백 이외의 내용 없음) 쿼리 문자열이 수신되고 응답은 emptyQueryResponse입니다

오류가 발생하면 ErrorResponse가 발행됩니다. readyforquery에 의해.

간단한 쿼리 모드에서 검색된 값의 형식은 다음과 같습니다. 주어진 명령이 A를 제외하고는 항상 텍스트입니다.fetchBINAGE옵션. 이 경우 검색되었습니다

프론트 엔드는 ErrorResponse를 수락 할 준비를해야합니다 다른 유형이 예상 될 때마다 alicerponse 메시지섹션 42.2.6백엔드가 생성 할 수있는 메이저 토토 사이트와 관련하여 외부 이벤트.

권장되는 관행은 State-Machine의 Frontendend를 코딩하는 것입니다 언제든지 모든 메이저 토토 사이트 유형을 수락하는 스타일

42.2.3. 확장 쿼리

확장 쿼리 프로토콜은 위에서 설명한 것을 분해합니다 여러 단계로 간단한 쿼리 프로토콜.

확장 프로토콜에서 프론트 엔드는 먼저 구문 분석을 보냅니다. 텍스트 쿼리 문자열이 포함 된 메이저 토토 사이트는 선택적으로 일부입니다

참고 :구문 분석에 포함 된 쿼리 문자열 메이저 토토 사이트에는 둘 이상의 SQL 문을 포함 할 수 없습니다.

성공적으로 생성 된 경우 명명 된 준비된 개체 명시 적으로가 아니라면 현재 세션이 끝날 때까지 지속됩니다.준비andexecute.

준비된 진술이 있으면 다시 확인할 수 있습니다. 바인드 메시지를 사용하여 실행.

참고 :텍스트와 이진 출력 사이의 선택 BAND에 주어진 형식 코드에 의해 결정됩니다.BINAGE커서 선언의 속성은 다음과 같습니다 확장 쿼리 프로토콜을 사용할 때 관련이 없습니다.

명명 된 준비된 개체에 대한 쿼리 계획이 발생합니다 구문 분석 메시지가 수신되면.

이름이없는 준비된 진술도 마찬가지로 계획됩니다 구문 분석 메시지가 매개 변수를 정의하지 않으면 처리됩니다.

참고 :매개 변수에서 생성 된 쿼리 계획 쿼리는 생성 된 쿼리 계획보다 덜 효율적일 수 있습니다.

이름이없는 것을 참조하는 두 번째 또는 후속 바인드 인 경우 준비된 진술 객체는없이 수신됩니다

성공적으로 생성되면 이름이 지정된 포털 객체는 계속됩니다 명시 적으로 현재 거래의 끝선언 커서andfetch.

포털이 존재하면 실행을 사용하여 실행할 수 있습니다. 메이저 토토 사이트."모두 가져 오십시오 줄 "). 결과 열 수는 만 의미가 있습니다

실행이 a의 실행을 완료하기 전에 종료되는 경우 포털 (0이 아닌 결과 행 카운트에 도달하기 때문에

각 시리즈의 확장 쿼리 메이저 토토 사이트를 완료 할 때 프론트 엔드는 동기화 메이저 토토 사이트를 발행해야합니다.시작/커밋트랜잭션 블록 ("Close"오류가 없거나 롤이없는 경우 커밋하는 것을 의미합니다 뒤로 오류가 있으면).while처리 동기 - 이것은 하나의 readyforquery 만 있음을 보장합니다.

참고 :동기화는 트랜잭션 블록을 유발하지 않습니다 로 개설시작폐쇄 될 예정입니다. 그것

이러한 기본, 필요한 작업 외에도 함께 사용할 수있는 몇 가지 선택적 작업입니다

설명 메시지 (포털 변형)는 이름을 지정합니다 기존 포털 (또는 이름없는 포털의 빈 문자열).

설명 메시지 (Statement variant)는 이름을 지정합니다 기존 준비 된 진술 (또는 빈 문자열

팁 :대부분의 시나리오에서 프론트 엔드가 발행해야합니다 발급하기 전에 설명의 하나 또는 다른 변형

닫기 메시지는 기존 준비 된 진술을 닫습니다 포털 및 릴리스 리소스.

플러시 메이저 토토 사이트로 인해 특정 출력이 발생하지 않습니다. 생성되었지만 백엔드가 보류중인 데이터를 전달하도록 강요합니다.

참고 :간단한 쿼리 메시지는 대략입니다 시리즈 구문 분석, 바인드, 포털 설명,

42.2.4. 함수 호출

함수 호출 서브 프로토콜을 사용하면 클라이언트가 요청할 수 있습니다 데이터베이스에 존재하는 모든 함수의 직접 호출PG_PROC시스템 카탈로그. 클라이언트

참고 :함수 호출 서브 프로토콜은 유산입니다 새 코드에서 가장 잘 피할 수있는 기능.선택 함수 ($ 1, ...). 그런 다음 함수 호출 사이클을 교체 할 수 있습니다

기능 호출주기는 전면 엔드에 의해 시작됩니다. 백엔드에 대한 기능을하는 메시지.

백엔드의 가능한 응답 메시지는 다음과 같습니다.

ErrorResponse

오류가 발생했습니다.

FunctionCallResponse

함수 호출이 완료되어 반환되었습니다 메이저 토토 사이트가 주어진 결과.

ReadyForquery

함수 호출 처리가 완료되었습니다. 처리 여부에 관계없이 ReadyForquery는 항상 전송됩니다

NoticerEsponse

경고 메이저 토토 사이트가 기능 호출.

42.2.5. 복사 작업

thecopy명령은 고속을 허용합니다 서버로 또는 대량 데이터 전송.

카피인 모드 (서버로의 데이터 전송)가 시작됩니다. 백엔드가 a 실행됩니다.stdin에서 복사SQL 문. 백엔드는 CopyInResponse 메시지를 보냅니다copy오류로 실패하는 SQL 문). 그만큼copy시작 단순 또는 확장 쿼리 프로토콜.

카피 인 모드에서 백엔드-검출 된 오류가 발생한 경우 (CopyFail 메이저 토토 사이트 수신 포함), 백엔드는 Will입니다copy명령은 연장 쿼리를 통해 발행되었습니다 메이저 토토 사이트, 백엔드는 이제 전면 엔드 메이저 토토 사이트를 폐기합니다.copy명령은 간단한 쿼리로 발행되었습니다 메이저 토토 사이트, 그 메이저 토토 사이트의 나머지 부분은 폐기됩니다

백엔드는 수신 된 플러시 및 동기화 메이저 토토 사이트를 무시합니다 복사 모드에서.복사 stdin.)

복사 모드 (서버에서 데이터 전송)가 시작됩니다 백엔드가 a를 실행할 때복사하십시오 stdoutSQL 문. 백엔드는 copiOUtresponse를 보냅니다copy시작하여 보냅니다 CommandComplete.

복사 중에 백엔드 감지 오류가 발생한 경우 모드, 백엔드는 ErrorResponse 메시지를 발행합니다

주목받는 메이저 토토 사이트가 될 수 있습니다 CopyData 메이저 토토 사이트 사이에 산재합니다.섹션 42.2.6). 그렇지 않으면 CopyData 또는 Copydone 이외의 메시지 유형이

CopyInResponse 및 CopyOUtResponse 메시지에는 포함됩니다 Frontend에 열의 수를 알리는 필드copy작동은 동일한 형식을 사용하지만 메시지 디자인은 이것을 가정하지 않습니다.)

42.2.6. 비동기 작업

백엔드가 보낼 경우 몇 가지가 있습니다. 프론트 엔드에서 구체적으로 제기되지 않은 메이저 토토 사이트

주석 응답 메이저 토토 사이트가 생성 될 수 있습니다 외부 활동으로 인해;"빠른"데이터베이스 종료, 백엔드는 주석에 반응을 보냅니다 연결을 닫기 전에이 사실을 나타냅니다.

Parameterstatus 메시지가 생성 될 때마다 생성됩니다 백엔서 매개 변수에 대한 활성 값 변경SETSQL 프론트 엔드에 의해 실행 된 명령,이 사례는 효과적으로Sighup우체국 장에게 신호를 보냅니다. 또한, ASET명령이 롤백됩니다 적절한 Parameterstatus 메시지가 생성되어보고합니다

현재에는 하드 타이어 매개 변수 세트가 있습니다. Parameterstatus가 생성 될 것입니다.server_version, Server_encoding, client_encoding, is_superuser, Session_Authorization, Datestyle, TimeZone, 그리고integer_dateTimes. (Server_encoding, TimeZoneinteger_dateTimes릴리스에 의해보고되지 않았습니다 8.0 이전.) 참고server_version, Server_encodingandinteger_dateTimes의사 파라미터입니다 시작 후 변경할 수 없습니다.

프론트 엔드가 A 발행하는 경우듣기명령에 따라 백엔드는 altificationResponse를 보냅니다 메이저 토토 사이트 (alicerponse와 혼동하지 말아야합니다!) a마다Notify명령이 실행됩니다 동일한 알림 이름.

참고 :현재, NotificationResponse 만 할 수 있습니다 거래 밖에서 보내 져서 발생하지 않습니다.

42.2.7. 진행중인 요청 취소

쿼리 처리 중에 프론트 엔드가 요청할 수 있습니다. 쿼리 취소.

취소 요청을 발행하려면 Frontend가 새로 열립니다. 서버에 연결하고 CancelRequest 메이저 토토 사이트를 보냅니다.

ConcelRequest 메이저 토토 사이트가 포함되지 않으면 무시됩니다 동일한 키 데이터 (PID 및 비밀 키)가 프론트 엔드로 전달되었습니다.

취소 신호는 어떤 영향을 미칠 수도 있고 아닐 수도 있습니다. 예를 들어, 백엔드가 끝난 후 도착하면

이 모든 것의 상향은 두 보안의 이유로 그리고 효율성, 프론트 엔드는

취소 요청이 새로운 연결을 통해 전송되기 때문에 정규 프론트 엔드/백엔드가 아닌 서버

42.2.8. 종료

정상적이고 우아한 종료 절차는 그 것입니다 프론트 엔드는 종료 메이저 토토 사이트를 보내고 즉시 닫습니다

드문 경우 (예 : 관리자-명령 데이터베이스 등 종료) 백엔드는 프론트 엔드없이 연결을 끊을 수 있습니다

다른 종료 시나리오는 다양한 실패에서 발생합니다 한쪽 끝 또는 다른 쪽의 코어 덤프와 같은 사례는

정상 또는 비정상 종료의 경우, 개방 거래는 롤백되어 커밋되지 않습니다.select쿼리가 처리 중입니다 알기 전에 쿼리를 완료 할 것입니다시작 ... 커밋시퀀스) 그러면 결과 일 수 있습니다 단절이 인식되기 전에 커밋되었습니다.

42.2.9. SSL세션 암호화

ifPostgreSQL지어졌습니다 와 함께SSL지원, 프론트 엔드/백엔드 커뮤니케이션을 사용하여 암호화 할 수 있습니다SSL. 이것은 제공합니다PostgreSQL세션 와 함께SSL, 참조섹션 16.8.

시작하려면SSL-암호화 된 연결, 프론트 엔드 처음에는 a가 아닌 sslrequest 메이저 토토 사이트를 보냅니다S또는N공연하다SSL.S, 수행SSL스타트 업 핸드 셰이크 (여기에 설명되지 않음, 의 일부SSL사양). 이것이 성공하면 계속하십시오SSL-암호화. 계속하려면N, 일반적인 startupmessage를 보내고 진행하십시오 암호화없이.

프론트 엔드도 처리 할 준비를해야합니다 서버에서 sslrequest에 대한 errormessage 응답.SSL지원PostgreSQL. 이 경우 연결SSL.

초기 sslRequest도 다음과 관련하여 사용될 수 있습니다. CancelRequest 메시지를 보내기 위해 열리고 있습니다.

프로토콜 자체가 강제로 서버SSL암호화, 관리자는 서버를 구성 할 수 있습니다 암호화되지 않은 세션을 인증의 부산물로 거부하십시오