지원되지 않는 버전 :6.3
이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다현재버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.
젠 토토
이전 다음

37 장. 연결 동적으로로드 된 함수

목차
PostgreSQL : 문서 : 6.3 : 토토 커뮤니티
PostgreSQL : 문서 : 6.3 : DEC 무지개 토토/1
PostgreSQL : 문서 : 6.3 : Sunos 4

사용자 정의 함수를 작성하고 등록한 후 당신의 작업은 본질적으로 완료됩니다. 그러나 Postgres는 다음을로드해야합니다 객체 코드 (예 : A.O파일 또는 공유 라이브러리) 기능을 구현합니다. 앞에서 언급했듯이 Postgres는 필요에 따라 런타임에 코드를로드합니다. 허용하기 위해 동적으로로드하려면 코드를 컴파일해야 할 수도 있고 특별한 방식으로 연결하십시오. 이 섹션에서는 간단히 설명하는 방법을 설명합니다 가능한 전에 필요한 컴파일 및 링크 팅을 수행하십시오 사용자 정의 기능을 실행중인 Postgres 서버에로드하십시오. 이 프로세스는 버전 4.2 기준으로 변경되었습니다.

팁 :오래된 Postgres 동적 로딩 메커니즘 실행 가능한 형식 측면에서 필요한 심층적 인 지식, 메모리 내에서 실행 가능한 지침의 배치 및 정렬, 동적 로더를 쓰는 사람의 부분. 그런 로더는 느리고 버그가되었습니다. 버전 4.2에서 Postgres Dynamic Loading 메커니즘이 다시 작성되었습니다. 운영 체제가 제공하는 동적 하중 메커니즘. 이것 접근 방식은 일반적으로 더 빠르고 신뢰할 수 있으며 휴대가 가능합니다 이전의 동적 하중 메커니즘보다. 이것의 이유 거의 모든 현대 버전의 UNIX가 동적 로딩을 사용하는 것입니다. 공유 라이브러리를 구현하는 메커니즘이므로해야합니다 빠르고 신뢰할 수있는 메커니즘을 제공하십시오. 반면에 객체 파일이로드되기 전에 약간 후 처리해야합니다. 포스트 그레로. 우리는 속도가 크게 증가하기를 바랍니다 신뢰성은 약간의 감소를 보완 할 것입니다 편의.

당신은 읽을 것을 기대해야합니다 (그리고 다시 읽고 다시 읽음) C 컴파일러의 수동 페이지, CC (1) 및 링크 편집기 특정 질문이있는 경우 LD (1). 또한 회귀 디렉토리의 테스트 스위트pgroot/src/regress몇 가지 작업 예제를 포함합니다 이 과정의. 이 테스트가하는 일을 복사하면 문제가 있습니다. 다음 용어는 아래에서 사용됩니다.
  • 동적 로딩객체 파일에 적용됩니다. 객체 파일이 Postgres 서버 및 내에서 기능 및 변수를 실행합니다 파일은 Postgres 프로세스. Postgres는 동적 하중을 사용하여이를 수행합니다 운영 체제가 제공하는 메커니즘.

  • 로드 및 링크 편집다른 종류의 생성을 위해 객체 파일을 사용합니다. 객체 파일 (예 : 실행 프로그램 또는 공유 라이브러리). 링크 편집 프로그램, ld (1).을 사용하여이를 수행합니다.

다음 일반적인 제한 및 메모도 아래 토론 :

  • create function 명령에 주어진 경로는 절대적이어야합니다. 눈에 보이는 디렉토리를 참조하는 경로 (즉, "/"로 시작) Postgres 서버가 실행중인 기계에서.

    팁 :상대 경로는 실제로 작동하지만 데이터베이스가있는 디렉토리와 관련하여 ( 일반적으로 프론트 엔드 응용 프로그램에는 보이지 않습니다). 분명히, 사용자가 프론트 엔드 애플리케이션을 시작한 디렉토리 서버가 완전히 다른 상태에서 실행 중일 수 있으므로 기계!

  • Postgres 사용자는 주어진 경로를 통과 할 수 있어야합니다. 기능 작성 명령 및 객체를 읽을 수 있습니다. 파일. Postgres 서버가 Postgres로 실행되기 때문입니다. 사용자, 프론트 엔드 프로세스를 시작하는 사용자가 아닙니다. (파일 또는 더 높은 수준의 디렉토리를 읽을 수 없게 만들고/또는 "Postgres"사용자가 실행할 수없는 것은 매우 일반적입니다 실수.)

  • 객체 파일 내에 정의 된 기호 이름은 충돌해서는 안됩니다 서로 또는 Postgres에 정의 된 기호와 함께.

  • GNU C 컴파일러는 일반적으로 특별한 것을 제공하지 않습니다. 운영 체제의 동적을 사용하는 데 필요한 옵션 로더 인터페이스. 그러한 경우, 함께 제공되는 C 컴파일러 운영 체제를 사용해야합니다.


이전 다음
Gist Indices up Ultrix