ALTER EXTENSION — 확장 정의 변경하기

ALTER EXTENSION — 확장 정의 변경하기

ALTER EXTENSION은 이미 설치된 확장(extension)의 정의를 바꾸는 명령이에요. 확장을 새 버전으로 업데이트하거나, 스키마를 옮기거나, 확장의 멤버 객체를 추가·제거할 때 씁니다. 확장의 구성 요소를 관리하는 일은 주로 확장의 업데이트 스크립트 안에서 이뤄져요.

출처: PostgreSQL 문서

본문

시놉시스 (Synopsis)

ALTER EXTENSION name UPDATE [ TO new_version ]
ALTER EXTENSION name SET SCHEMA new_schema
ALTER EXTENSION name ADD member_object
ALTER EXTENSION name DROP member_object

where member_object is:

  ACCESS METHOD object_name |
  AGGREGATE aggregate_name ( aggregate_signature ) |
  CAST (source_type AS target_type) |
  COLLATION object_name |
  CONVERSION object_name |
  DOMAIN object_name |
  EVENT TRIGGER object_name |
  FOREIGN DATA WRAPPER object_name |
  FOREIGN TABLE object_name |
  FUNCTION function_name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |
  MATERIALIZED VIEW object_name |
  OPERATOR operator_name (left_type, right_type) |
  OPERATOR CLASS object_name USING index_method |
  OPERATOR FAMILY object_name USING index_method |
  [ PROCEDURAL ] LANGUAGE object_name |
  PROCEDURE procedure_name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |
  ROUTINE routine_name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |
  SCHEMA object_name |
  SEQUENCE object_name |
  SERVER object_name |
  TABLE object_name |
  TEXT SEARCH CONFIGURATION object_name |
  TEXT SEARCH DICTIONARY object_name |
  TEXT SEARCH PARSER object_name |
  TEXT SEARCH TEMPLATE object_name |
  TRANSFORM FOR type_name LANGUAGE lang_name |
  TYPE object_name |
  VIEW object_name

and aggregate_signature is:

* |
[ argmode ] [ argname ] argtype [ , ... ] |
[ [ argmode ] [ argname ] argtype [ , ... ] ] ORDER BY [ argmode ] [ argname ] argtype [ , ... ]

설명 (Description)

ALTER EXTENSION은 설치된 확장의 정의를 변경해요. 여러 하위 형식이 있어요.

  • UPDATE — 이 형식은 확장을 더 새로운 버전으로 업데이트해요. 확장은 현재 설치된 버전을 요청된 버전으로 바꿀 수 있는 적절한 업데이트 스크립트(또는 일련의 스크립트)를 제공해야 해요.
  • SET SCHEMA — 이 형식은 확장의 객체를 다른 스키마로 옮겨요. 이 명령이 성공하려면 확장이 *재배치 가능(relocatable)*해야 해요.
  • ADD member_object — 이 형식은 기존 객체를 확장에 추가해요. 주로 확장 업데이트 스크립트에서 유용해요. 이 객체는 이후 확장의 멤버로 취급되며, 특히 확장을 드롭해야만 드롭할 수 있어요.
  • DROP member_object — 이 형식은 멤버 객체를 확장에서 제거해요. 주로 확장 업데이트 스크립트에서 유용해요. 객체는 드롭되지 않고 확장과의 연결만 끊겨요.

이 작업들에 대한 자세한 내용은 36.17절을 보세요. ALTER EXTENSION을 쓰려면 확장의 소유자여야 해요. ADD/DROP 형식은 추가하거나 제거할 객체의 소유권도 필요해요.

매개변수 (Parameters)

  • name — 설치된 확장의 이름이에요.
  • new_version — 확장의 원하는 새 버전이에요. 식별자나 문자열 리터럴로 쓸 수 있어요. 지정하지 않으면 ALTER EXTENSION UPDATE는 확장의 control 파일에 기본 버전으로 표시된 값으로 업데이트를 시도해요.
  • new_schema — 확장의 새 스키마예요.
  • object_name, aggregate_name, function_name, operator_name, procedure_name, routine_name — 확장에 추가하거나 확장에서 제거할 객체의 이름이에요. 테이블, 집계 함수, 도메인, 외부 테이블, 함수, 연산자, 연산자 클래스, 연산자 패밀리, 프로시저, 루틴, 시퀀스, 텍스트 검색 객체, 타입, 뷰의 이름은 스키마 한정할 수 있어요.
  • source_type — 캐스트(cast)의 소스 데이터 타입 이름이에요.
  • target_type — 캐스트의 대상 데이터 타입 이름이에요.
  • argmode — 함수, 프로시저, 집계 함수 인자의 모드로 IN, OUT, INOUT, VARIADIC이에요. 생략하면 기본값은 IN이에요. ALTER EXTENSION은 함수의 정체성을 결정할 때 입력 인자만 필요하므로 OUT 인자에는 실제로 신경 쓰지 않아요. 그래서 IN, INOUT, VARIADIC 인자만 나열하면 충분해요.
  • argname — 함수, 프로시저, 집계 함수 인자의 이름이에요. ALTER EXTENSION은 함수의 정체성을 결정할 때 인자 데이터 타입만 필요하므로 인자 이름에는 신경 쓰지 않아요.
  • argtype — 함수, 프로시저, 집계 함수 인자의 데이터 타입이에요.
  • left_type, right_type — 연산자 인자의 데이터 타입(선택적으로 스키마 한정)이에요. 접두 연산자의 빠진 인자에는 NONE을 쓰세요.
  • PROCEDURAL — 이건 노이즈 단어(noise word)예요.
  • type_name — 트랜스폼(transform)의 데이터 타입 이름이에요.
  • lang_name — 트랜스폼의 언어 이름이에요.

예제 (Examples)

hstore 확장을 버전 2.0으로 업데이트하려면:

ALTER EXTENSION hstore UPDATE TO '2.0';

hstore 확장의 스키마를 utils로 바꾸려면:

ALTER EXTENSION hstore SET SCHEMA utils;

기존 함수를 hstore 확장에 추가하려면:

ALTER EXTENSION hstore ADD FUNCTION populate_record(anyelement, hstore);

호환성 (Compatibility)

ALTER EXTENSION은 PostgreSQL 확장이에요.

더 알아보기 (Learn more)