CREATE EXTENSION — 확장 모듈 설치
CREATE EXTENSION [ IF NOT EXISTS ]확장모듈이름
[ WITH ] [ SCHEMA스키마이름
] [ VERSION버전
] [ FROM옛버전
] [ CASCADE ]
CREATE EXTENSION
명령은 현재 데이터베이스에
새 확장 모듈을 설치한다.
이미 설치된 같은 이름의 확장 모듈이 없어야 한다.
이 명령을 실행하면, 해당 확장 모듈 설치용 스크립트가 실행된다.
그 스크립트에는 일반적으로
함수, 자료형, 연산자, 인덱스에서 쓰는 접근 방법 같은 SQL
개체들을 만드는 명령어들이 있다.
CREATE EXTENSION
명령은
추가로 이렇게 만들어지는 개체들의 OID 값을 기록해 둔다.
DROP EXTENSION
명령을 실행 할 때 이 OID
개체들을 지우기 위함이다.
이 명령은 여러 개체를 만드는 일을 하기 때문에,
그 각 작업에 필요한 적합한 권한이 있어야 한다.
확장 모듈 대부분은 슈퍼유저 또는 해당 데이터베이스
소유주만 설치할 수 있다.
CREATE EXTENSION
명령을 실행하는
사용자는 해당 확장 모듈의 소유주 되며,
그 확장 모듈 소속 모든 개체들의 소유주가 된다.
IF NOT EXISTS
이미 해당 확장 모듈이 설치 되어 있어도, 오류로 처리하지 않고 알림 메시지만 보여 준다. 이 옵션은 단지 해당 확장 모들의 이름이 중복 되는지만 검사하지, 정확히 이미 설치된 것과 설치할 것이 같은지는 검사하지는 않는다.
확장모듈이름
설치할 확장 모듈 이름.
PostgreSQL 확장 모듈은
SHAREDIR/extension/
확장모듈이름
.control
파일로 설치 정보가 관리된다. (즉, 이 파일이 있어야 설치할 수 있다. - 옮긴이)
스키마이름
해당 확장 모듈에 속한 개체들을 지정한 스키마에 만든다. 이 이름의 스키마는 이미 있는 것이여야 한다. 이 옵션을 사용하지 않았고, 확장모듈 제어 파일에서 스키마를 지정하지 않았다면, search_path 설정값의 첫번째 스키마 안에 만든다.
이 SCHEMA
옵션을 사용해서 스키마를 지정했는데,
해당 확장 모듈 제어 파일에도 스키마를 지정했고,
서로 다르다면, 스키마 이름 충돌로 오류 처리된다.
반면,
CASCADE
옵션을 추가하면, 이런 경우
스키마이름
설정이
무시된다. 스키마이름
을
지정하는 경우는, 일반적으로 해당 확장 모듈이 특정 스키마를
사용하지 않는(지정하지 않았는) 경우에 유용하게 쓰인다.
이 확장 모듈 자체는 어느 스키마에도 속하지 않는다. 이 확장 모듈을 해당 데이터베이스 기준 전역 개체다. 즉 데이터베이스 내 유일해야 한다. 하지만 해당 확장 모듈 소속 개체들은 특정 스키마 안에 만들어진다.
버전
설치할 확장 모듈의 버전을 지정한다. 이 버전 값은 식별자이거나 문자열이다. 이 옵션을 지정하지 않으면, 해당 확장 모듈 제어 파일에서 지정한 기본 버전이 설치된다.
옛버전
FROM
옛버전
구문은 엄격히 말하면, 확장 모듈을 설치하는 것이 아니라,
옛날 형식으로 설치된 해당 확장 모듈 소속 개체들을
지정한 확장 모듈 개체 소속으로 지정하는 일을 한다.
이 작업에는 해당 확장 모듈의 대체 설치 스크립트가 사용된다.
이 때는 기존 소속 개체들을 포함하는 스키마를
SCHEMA
옵션으로 지정해야 한다.
옛버전
값은 해당 확장 모듈
제작자에 의해 결정되며, 새 확장 모듈로 업그레이드 할 수있는
옛날 방식 모듈의 버전이 두 개 이상 있는 경우 달라질 수 있다.
9.1 이전 버전에서 설치된 확장 모듈이 옛 버전인 경우는
이 값으로 unpackaged
를 사용한다.
CASCADE
이 옵션을 사용하면 설치하려는 확장 모듈을 사용하기 위해
필요한 상위 확장 모듈들 가운데 아직 설치되지 않은 확장 모들을
재귀적으로 모두 설치한다.
이 때,
SCHEMA
옵션이 있으면, 같이 설치되는 모든 확장 모듈에도
SCHEMA
옵션을 적용한다. 그외 다른 옵션들은
이렇게 함께 설치 되는 확장 모듈에는 적용되지 않으며,
버전은 각 확장 모듈의 기본 버전이 설치된다.
CREATE EXTENSION
명령으로 한 확장 모듈 설치하려면, 먼저
그 설치 작업을 어떻게 할지를 지정한 해당 확장 모듈 지원 파일들이
먼저 해당 서버에 있어야 한다.
PostgreSQL 확장 모듈을 어떻게 설치하고,
사용하지는에 대한 자세한 이야기는
부가 확장 모듈들에서 소개하고 있다.
사용할 수 있는 확장 모듈의 이름은
pg_available_extensions
뷰에서, 그 모듈의 버전은
pg_available_extension_versions
뷰에서 확인할 수 있다.
새 확장 모듈을 직접 만들고자 할 때 필요한 정보는 38.16절에서 다룬다.
현재 데이터베이스에 hstore 확장 모듈을 실치 하는 경우:
CREATE EXTENSION hstore;
9.1 버전 이전에 이미 설치된 hstore
소속을 개체들을
하나의 확장 모듈로 묶는 경우:
extension style:
CREATE EXTENSION hstore SCHEMA public FROM unpackaged;
이 때는 그 hstore
소속 개체들이 어느 스키마에 있는지
꼭 확인하고, 그 스키마 이름을 지정해 주어야 한다.
CREATE EXTENSION
구문은 PostgreSQL
확장 기능이다.