57 장. 테이블 토토 결과 방법 쓰기

PostgreSQL의 구현테이블 샘플조항은 사용자 정의 테이블 샘플링 방법을 지원하고BernoulliandSystemSQL 표준에 필요한 방법. 토토 결과 방법은 테이블의 어떤 행을 선택할 때를 선택합니다.테이블 샘플조항이 사용됩니다.

SQL 레벨에서 테이블 샘플링 방법은 단일 SQL 함수로 표시되며, 일반적으로 C로 구현되어 서명

method_name (내부)을 반환합니다. tsm_handler

함수의 이름은 동일한 메소드 이름입니다.테이블 샘플절. 그만큼내부인수는 단순히이 함수가 SQL 명령에서 직접 호출되는 것을 방지하는 데 도움이되는 더미 (항상 값 0이 있음)입니다. 함수의 결과는 palloc'd 유형의 구조 여야합니다tsmroutine, 여기에는 샘플링 방법에 대한 기능을 지원하기위한 포인터가 포함되어 있습니다. 이러한 지원 기능은 일반 C 기능이며 SQL 레벨에서는 보이거나 호출 할 수 없습니다.섹션 57.1.

기능 포인터 외에도tsmroutine구조는 이러한 추가 필드를 제공해야합니다 :

List *ParameterTypes

이것은에 의해 수락 될 매개 변수의 데이터 유형 OID를 포함하는 OID 목록입니다.테이블 샘플이 토토 결과 방법이 사용될 때의 절. 예를 들어, 내장 방법의 경우이 목록은 값이있는 단일 항목을 포함합니다float4oid는 토토 결과 백분율을 나타냅니다. 사용자 정의 토토 결과 메소드는 더 많은 또는 다른 매개 변수를 가질 수 있습니다.

bool reportable_across_queries

iftrue, 토토 결과 방법은 동일한 매개 변수 인 경우 연속 쿼리에서 동일한 샘플을 전달할 수 있습니다.반복 가능한종자 값은 매번 제공되며 테이블 내용은 변경되지 않았습니다. 이것이 일 때거짓, The반복 가능한조항은 토토 결과 방법과 함께 사용하기 위해 허용되지 않습니다.

bool repeatable_across_scans

iftrue, 토토 결과 방법은 동일한 쿼리에서 연속 스캔에서 동일한 샘플을 전달할 수 있습니다 (변하지 않는 매개 변수, 시드 값 및 스냅 샷을 가정). 이것이 일 때거짓, 플래너는 토토 결과 된 테이블을 두 번 이상 스캔 해야하는 요금제를 선택하지 않으므로 일관되지 않은 쿼리 출력이 발생할 수 있으므로.

thetsmroutinestruct 유형은src/include/access/tsmapi.h, 추가 세부 사항을 참조하십시오.

표준 분포에 포함 된 테이블 샘플링 방법은 자신의 글을 쓰려고 할 때 좋은 참조입니다. 조사SRC/백엔드/액세스/테이블 샘플내장 토토 결과 방법에 대한 소스 트리의 하위 디렉토리 및Contrib애드온 방법에 대한 하위 디렉토리.

정정 제출

문서에 올바른 것이 없으면 일치하지 않습니다.이 양식문서 문제를보고하려면