CREATE CONVERSION — 새 인코딩 변환 정의하기

CREATE CONVERSION — 새 인코딩 변환 정의하기

CREATE CONVERSION 명령은 두 문자 집합 인코딩 사이의 새 변환(conversion)을 정의하는 명령이에요. DEFAULT로 표시된 변환은 클라이언트와 서버 사이의 자동 인코딩 변환에 사용될 수 있어요.

출처: PostgreSQL 문서

본문

Synopsis

CREATE [ DEFAULT ] CONVERSION name
    FOR source_encoding TO dest_encoding FROM function_name

Description

CREATE CONVERSION은 두 문자 집합 인코딩 사이의 새 변환을 정의해요.

DEFAULT로 표시된 변환은 클라이언트와 서버 사이의 자동 인코딩 변환에 사용될 수 있어요. 그런 사용을 지원하려면 인코딩 A에서 B로, 그리고 인코딩 B에서 A로, 두 개의 변환이 정의되어야 해요.

변환을 생성하려면 그 함수에 대한 EXECUTE 권한과 대상 스키마에 대한 CREATE 권한이 있어야 해요.

Parameters

DEFAULT

DEFAULT 절은 이 변환이 이 특정 소스에서 대상 인코딩 변환의 기본값임을 나타내요. 스키마 안에서 인코딩 쌍에 대한 기본 인코딩은 하나만 있어야 해요.

name

변환의 이름이에요. 변환 이름은 스키마 한정일 수 있어요. 그렇지 않으면 현재 스키마에 정의돼요. 변환 이름은 스키마 안에서 고유해야 해요.

source_encoding

소스 인코딩 이름이에요.

dest_encoding

대상 인코딩 이름이에요.

function_name

변환을 수행하는 데 사용되는 함수예요. 함수 이름은 스키마 한정일 수 있어요. 그렇지 않으면 검색 경로(path)에서 조회돼요.

함수는 다음 시그니처를 가져야 해요:

conv_proc(
    integer,  -- source encoding ID
    integer,  -- destination encoding ID
    cstring,  -- source string (null terminated C string)
    internal, -- destination (fill with a null terminated C string)
    integer,  -- source string length
    boolean   -- if true, don't throw an error if conversion fails
) RETURNS integer;

반환 값은 성공적으로 변환된 소스 바이트 수예요. 마지막 인자가 false면 함수는 잘못된 입력에 대해 오류를 던져야 하며, 반환 값은 항상 소스 문자열 길이와 같아요.

Notes

소스와 대상 인코딩 모두 SQL_ASCII일 수 없는데, SQL_ASCII "인코딩"을 다루는 서버의 동작은 하드코딩되어 있기 때문이에요.

사용자 정의 변환을 제거하려면 DROP CONVERSION을 사용해요.

변환을 생성하는 데 필요한 권한은 향후 릴리스에서 변경될 수 있어요.

Examples

myfunc를 사용해 인코딩 UTF8에서 LATIN1으로의 변환을 생성하기:

CREATE CONVERSION myconv FOR 'UTF8' TO 'LATIN1' FROM myfunc;

Compatibility

CREATE CONVERSION은 PostgreSQL 확장이에요. SQL 표준에는 CREATE CONVERSION 문이 없지만, 목적과 문법이 매우 유사한 CREATE TRANSLATION 문이 있어요.

더 알아보기 (Learn more)