서버는 다음과 같은 방식으로 메모리 컨텍스트에 메모리를 할당합니다. 한 컨텍스트에서 이루어진 할당은 컨텍스트에 따라 해제될 수 있습니다. 다른 컨텍스트에서 이루어진 할당에 영향을 주지 않고 파기됩니다. 모든 할당(경유팔록등)은 현재 컨텍스트로 선택된 컨텍스트에서 만들어집니다. 당신은 얻을 것이다 해제(또는 재할당)하려고 하면 예측할 수 없는 결과가 발생합니다. 현재 컨텍스트에 할당된 메모리가 아닙니다.
메모리 컨텍스트 간의 생성 및 전환은 다음과 같습니다. SPI 관리자 메모리 관리.
SPI 프로시저는 두 가지 롤 토토 컨텍스트를 처리합니다: 상위 실행자 롤 토토 컨텍스트 및 프로시저 롤 토토 컨텍스트(연결된 경우).
프로시저가 SPI 관리자에 연결되기 전, 현재 메모리 컨텍스트는 상위 실행자 컨텍스트이므로 모든 할당이 이루어집니다. 절차 자체를 통해팔록/repalloc또는 작성자 SPI에 연결하기 전의 SPI 유틸리티 기능은 다음과 같습니다. 맥락.
이후SPI_connect현재라고 합니다 컨텍스트는 프로시저의 컨텍스트입니다. 다음을 통해 이루어진 모든 할당팔록/repalloc또는 SPI 유틸리티 기능으로(다음 제외)SPI_copytuple, SPI_modifytuple, SPI_palloc그리고SPI_repalloc)는 이러한 맥락에서 만들어졌습니다.
프로시저가 SPI 관리자로부터 연결을 끊을 때(를 통해SPI_finish) 현재 컨텍스트는 다음과 같습니다. 상위 Executor 컨텍스트로 복원되고 모든 할당이 이루어졌습니다. 프로시저 메모리 컨텍스트에서는 해제되어 사용할 수 없습니다. 더!
상위 집행자에게 무언가를 반환하고 싶다면 이를 위해 상위 컨텍스트에서 롤 토토를 할당해야 합니다!
SPI는 자동으로 할당을 해제하는 기능이 없습니다. 상위 실행자 컨텍스트!
SPI는 실행 중에 할당된 롤 토토를 자동으로 해제합니다. 이 쿼리가 완료되면 쿼리하세요!