| 젠 토토 : 문서 : 9.6 : 젠 토토 | |||
|---|---|---|---|
| 롤 토토 : 문서 : 9.6 : spi_getnspname | 토토 꽁 머니 PostgreSQL: Documentation: 9.6: Server Programming Interface | 45장. 서버 프로그래밍 인터페이스 | 젠 토토 : 문서 : 9.6 : SPI_PALLOC | 
SPI_execute또는 유사한 기능포스트그레SQL내부에 무지개 토토를 할당합니다.무지개 토토 컨텍스트는 서로 다른 시간 동안 살아야 하는 다양한 장소에서 할당된 할당을 관리하는 편리한 방법을 제공합니다. 컨텍스트를 삭제하면 해당 컨텍스트에 할당된 모든 무지개 토토가 해제됩니다. 따라서 무지개 토토 누수를 피하기 위해 개별 객체를 추적할 필요가 없습니다. 대신 상대적으로 적은 수의 컨텍스트만 관리하면 됩니다.팔록및 관련 함수는 다음에서 메모리를 할당합니다."현재"컨텍스트.
SPI_connect새 무지개 토토 컨텍스트를 생성하고 현재로 만듭니다.SPI_finish이전의 현재 무지개 토토 컨텍스트를 복원하고 다음에 의해 생성된 컨텍스트를 파괴합니다.SPI_connect. 이러한 작업을 통해 프로시저 내부에서 수행된 임시 무지개 토토 할당이 프로시저 종료 시 회수되어 무지개 토토 누수를 방지할 수 있습니다.
그러나 프로시저가 할당된 메모리의 객체(예: 참조별 전달 데이터 유형의 값)를 반환해야 하는 경우 다음을 사용하여 해당 메모리를 할당할 수 없습니다.팔록, 적어도 SPI에 연결되어 있는 동안에는 그렇지 않습니다. 시도하면 개체 할당이 해제됩니다.SPI_finish, 그리고 귀하의 절차가 안정적으로 작동하지 않을 것입니다. 이 문제를 해결하려면 다음을 사용하세요.SPI_palloc반환 객체에 무지개 토토를 할당합니다.SPI_palloc다음에 메모리를 할당합니다."상위 실행자 컨텍스트", 즉, 당시 현재 있었던 무지개 토토 컨텍스트입니다.SPI_connect호출되었습니다. 이는 프로시저에서 반환된 값에 대한 정확한 컨텍스트입니다.
만약SPI_palloc프로시저가 SPI에 연결되지 않은 동안 호출되면 일반과 동일하게 작동합니다.팔록. 프로시저가 SPI 관리자에 연결되기 전에 현재 무지개 토토 컨텍스트는 상위 실행기 컨텍스트이므로 모든 할당은 다음을 통해 프로시저에 의해 이루어집니다.팔록또는 SPI 유틸리티 함수에 의해 이 컨텍스트에서 만들어집니다.
언제SPI_connect에 의해 생성된 프로시저의 개인 컨텍스트가 호출됩니다.SPI_connect, 현재 컨텍스트가 됩니다. 모든 할당은팔록, repalloc또는 SPI 유틸리티 함수( 제외)SPI_copytuple, SPI_returntuple, SPI_modifytuple및SPI_palloc)은 이러한 맥락에서 만들어집니다. 프로시저가 SPI 관리자로부터 연결이 끊어질 때(경유)SPI_finish) 현재 컨텍스트가 상위 실행기 컨텍스트로 복원되고 프로시저 무지개 토토 컨텍스트에서 이루어진 모든 할당이 해제되어 더 이상 사용할 수 없습니다.
이 섹션에 설명된 모든 기능은 연결된 프로시저와 연결되지 않은 프로시저 모두에서 사용할 수 있습니다. 연결되지 않은 프로시저에서는 기본 일반 서버 기능과 동일하게 작동합니다(팔록등).