32.6. 토토 커뮤니티 검색 결과 chunks#

보통,libpqSQL 명령의 전체 결과를 수집하여 응용 프로그램에 단일로 반환합니다pgresult. 많은 수의 행을 반환하는 명령에 대해서는 불가능할 수 있습니다.pqsendqueryandpqgetresultin단일 로우 모드또는청크 모드. 이 모드에서는 결과 행 (S)이 서버에서 수신 된대로 응용 프로그램으로 반환됩니다. 단일 로우 모드의 경우 한 번에 하나씩 또는 청크 모드의 그룹으로.

이 모드 중 하나를 입력하려면 전화pqsetsinglerowmode또는pqsetchUnkedrowsmode성공적인 전화 직후pqsendquery(또는 형제 기능). 이 모드 선택은 현재 실행중인 쿼리에만 효과적입니다.pqgetresult반복적으로, null이 반환 될 때까지, 문서화 된대로섹션 32.4. 토토 커뮤니티가 행을 반환하면 하나 이상으로 반환됩니다pgresult객체, 상태 코드를 제외한 일반적인 토토 커뮤니티 결과처럼 보이는 객체pgres_single_tuple단일 열 모드 또는pgres_tuples_chunk대신 청크 모드의 경우pgres_tuples_ok. 각각에 정확히 하나의 결과 행이 있습니다pgres_single_tuple객체, apgres_tuples_chunk개체에는 최소한 하나의 행이 포함되어 있지만 청크 당 지정된 행 수보다 많지 않습니다. 마지막 행 후 또는 쿼리가 0 행을 반환하는 경우 즉시, 상태가있는 제로 로우 객체pgres_tuples_ok반환됩니다. 이것은 더 이상 행이 도착하지 않을 것이라는 신호입니다.pqgetresultNULL을 반환 할 때까지.) 이들 모두pgresult개체는 평범한 동일한 행 설명 데이터 (열 이름, 유형 등)를 포함합니다pgresult토토 커뮤니티의 개체. 각 객체는PQCLEAR평소와 같이.

파이프 라인 모드를 사용할 때는 파이프 라인의 각 쿼리에 대해 단일 줄 또는 청크 모드를 활성화해야합니다.pqgetresult. 보다PostgreSQL : 문서 : 17 : 32.5. 파이프 토토 꽁 머니 모드자세한 내용은

pqsetsinglerowmode #

현재 실행중인 쿼리의 단일 열 모드 선택.

int pqsetsinglerowmode (pgconn *conn);

이 함수는 즉시 호출 할 수 있습니다pqsendquery또는 그와 같은 연결에서 다른 작업을하기 전에pqconsumeInput또는pqgetresult. 올바른 시간에 호출되면 기능은 현재 쿼리의 단일 열 모드를 활성화하고 1을 반환합니다. 그렇지 않으면 모드가 변경되지 않고 0이 반환됩니다. 어쨌든 현재 쿼리가 완료된 후 모드가 정상으로 되돌아갑니다..

pqsetchUnkedrowsmode #

현재 실행중인 쿼리의 청크 모드 선택.

int pqsetchunkedrowsmode (pgconn *conn, int chunksize);

이 기능은와 유사합니다.pqsetsinglerowmode- 최대 |Chunksize당 행pgresult이 기능은 직후에만 호출 할 수 있습니다.pqsendquery또는 그와 같은 연결에서 다른 작업을하기 전에pqconsumeInput또는pqgetresult. 올바른 시간에 호출되면, 함수는 현재 쿼리의 청크 모드를 활성화하고 1을 반환합니다. 그렇지 않으면 모드가 변경되지 않은 상태로 유지되고 함수는 0을 반환합니다. 어쨌든 현재 쿼리가 완료된 후 모드가 정상으로 되돌아갑니다..

주의

쿼리를 처리하는 동안 서버는 일부 행을 반환 한 다음 오류가 발생하여 쿼리가 중단 될 수 있습니다. 일반적으로libpq그러한 행을 버리고 오류 만보고합니다. 그러나 단일 줄 또는 청크 모드에서는 일부 행이 이미 응용 프로그램으로 반환되었을 수 있습니다.pgres_single_tuple또는pgres_tuples_chunk pgresult객체 뒤에 Apgres_fatal_error개체. 적절한 트랜잭션 동작을 위해, 쿼리가 궁극적으로 실패하면 이전에 처리 된 행으로 수행 된 모든 것을 폐기하거나 취소하도록 애플리케이션이 설계되어야합니다..

정정 제출

문서에 맞지 않는 내용이 있으면 일치하지 않습니다.이 양식문서 문제를보고하려면