1. POSTGRES 익스텐션 만드는 법
간단한 사칙연산 기능 추가하기
발표자: 이동욱
이메일: [email protected]
KOPGEST(KOREA POSTGRES EXTENSION STUDY TEAM) 스터디 그룹
마지막 업데이트: 2022.09.18
2. 진행할 내용
C언어로 작성된 POSTGRES 익스텐션을 어떻게 만드는지에 대해서 알아
본다.
덧셈, 뺄셈, 곱하기, 나누기와 같은 사칙연산을 수행하는 POSTGRES 익
스텐션을 만들어본다.
전체 소스코드는 다음 링크에서 확인할 수 있습니다.
https://github.com/dongwooklee96/pg_calculator_extension
이동욱 POSTGRES 익스텐션 만드는 법
3. 1. 익스텐션 디렉터리 생성
프로젝트 루트에서 /contrib 디렉터리에 들어가서, 만들고 싶은 익스텐션
이름으로 디렉터리를 만듭니다.
여기서는 calculator 라는 이름으로 만들도록 하겠습니다.
이동욱 POSTGRES 익스텐션 만드는 법
4. 2. control 파일과, sql 파일 생성
터미널
- calculator.control
- calculator–0.0.1.sql
일반적으로 익스텐션을 만드려면, ‘*.control‘ 파일과, ‘*.sql‘ 스크립트 파
일이 필요합니다.
파일 이름 접두사에서는 반드시 익스텐션 이름이 나와야 합니다.
예시)익스텐션이름.control, 익스텐션이름–버전.sql
이동욱 POSTGRES 익스텐션 만드는 법
5. 3. control 파일 작성
calculator.control
# calculator extension
comment = ’basic calculator’
default_version = ’0.0.1’
module_pathname = ’$libdir/calculator’
무엇을 하는 익스텐션인지에 대한 설명 및 버전 그리고 해당 익스텐션이
위치하는 공유 라이브러리 경로를 입력합니다.
이동욱 POSTGRES 익스텐션 만드는 법
6. 4. SQL 스크립트 파일 작성
calculator–0.0.1.sql
--complain if script is sourced in psql, rather than via CREATE EXTENSION
echo Use "CREATE EXTENSION calculator" to load this file. quit
CREATE FUNCTION add(int, int) RETURNS int
AS ’$libdir/calculator’, ’add’
LANGUAGE C IMMUTABLE STRICT;
...
공유 라이브러리에 생성될 함수들을 선언해줍니다.
이동욱 POSTGRES 익스텐션 만드는 법
7. 5. C 코드 생성
calculator.c
#include "postgres.h"
#include "fmgr.h"
PG_MODULE_MAGIC;
PG_FUNCTION_INFO_V1(add);
PG_FUNCTION_INFO_V1(minus);
PG_FUNCTION_INFO_V1(multiply);
PG_FUNCTION_INFO_V1(divide);
...
이동욱 POSTGRES 익스텐션 만드는 법
8. 5. C 코드 생성
calculator.c
...
Datum
add(PG_FUNCTION_ARGS)
{
int32 a = PG_GETARG_INT32(0);
int32 b = PG_GETARG_INT32(1);
PG_RETURN_INT32(a + b);
}
...
이동욱 POSTGRES 익스텐션 만드는 법
9. 5. C 코드 생성
"postgres.h", "fmgr.h" 파일을 임포트 해서, postgres 및 익스텐션에서 사
용할 매크로를 선언합니다.
상세 내용은 해당 문서 를 클릭하면 자세히 확인할 수 있습니다.
이동욱 POSTGRES 익스텐션 만드는 법
10. 6. Makefile 생성
Makefile
MODULES = calculator
EXTENSION = calculator
DATA = calculator--0.0.1.sql
...
Makefile 파일을 작성하여, 익스텐션 이름과 이전에 작성했던 SQL 스크립
트 파일을 지정합니다.
POSTGRES는 PGXS 라는 빌드 인프라를 통해서 익스텐션을 빌드할 수
있도록 도와줍니다. 다음 문서 를 클릭하면 자세히 확인할 수 있습니다.
이동욱 POSTGRES 익스텐션 만드는 법
11. 7. 빌드 및 설치
터미널
make install
make install 명령어를 통해서 빌드 및 설치를 합니다.
이동욱 POSTGRES 익스텐션 만드는 법
12. 8. 실행
CREATE EXTENSION calculator 명령어로 익스텐션을 설치합니다.
생성했던 함수를 실행시킬 수 있습니다.
이동욱 POSTGRES 익스텐션 만드는 법
13. 참고문헌
Writing Postgres Extensions - the Basics
How to create, test and debug an extension written in C for Post-
greSQL
이동욱 POSTGRES 익스텐션 만드는 법