SlideShare a Scribd company logo
POSTGRES 익스텐션 만드는 법
간단한 사칙연산 기능 추가하기
발표자: 이동욱
이메일: sh95119@gmail.com
KOPGEST(KOREA POSTGRES EXTENSION STUDY TEAM) 스터디 그룹
마지막 업데이트: 2022.09.18
진행할 내용
C언어로 작성된 POSTGRES 익스텐션을 어떻게 만드는지에 대해서 알아
본다.
덧셈, 뺄셈, 곱하기, 나누기와 같은 사칙연산을 수행하는 POSTGRES 익
스텐션을 만들어본다.
전체 소스코드는 다음 링크에서 확인할 수 있습니다.
https://github.com/dongwooklee96/pg_calculator_extension
이동욱 POSTGRES 익스텐션 만드는 법
1. 익스텐션 디렉터리 생성
프로젝트 루트에서 /contrib 디렉터리에 들어가서, 만들고 싶은 익스텐션
이름으로 디렉터리를 만듭니다.
여기서는 calculator 라는 이름으로 만들도록 하겠습니다.
이동욱 POSTGRES 익스텐션 만드는 법
2. control 파일과, sql 파일 생성
터미널
- calculator.control
- calculator–0.0.1.sql
일반적으로 익스텐션을 만드려면, ‘*.control‘ 파일과, ‘*.sql‘ 스크립트 파
일이 필요합니다.
파일 이름 접두사에서는 반드시 익스텐션 이름이 나와야 합니다.
예시)익스텐션이름.control, 익스텐션이름–버전.sql
이동욱 POSTGRES 익스텐션 만드는 법
3. control 파일 작성
calculator.control
# calculator extension
comment = ’basic calculator’
default_version = ’0.0.1’
module_pathname = ’$libdir/calculator’
무엇을 하는 익스텐션인지에 대한 설명 및 버전 그리고 해당 익스텐션이
위치하는 공유 라이브러리 경로를 입력합니다.
이동욱 POSTGRES 익스텐션 만드는 법
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 익스텐션 만드는 법
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 익스텐션 만드는 법
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 익스텐션 만드는 법
5. C 코드 생성
"postgres.h", "fmgr.h" 파일을 임포트 해서, postgres 및 익스텐션에서 사
용할 매크로를 선언합니다.
상세 내용은 해당 문서 를 클릭하면 자세히 확인할 수 있습니다.
이동욱 POSTGRES 익스텐션 만드는 법
6. Makefile 생성
Makefile
MODULES = calculator
EXTENSION = calculator
DATA = calculator--0.0.1.sql
...
Makefile 파일을 작성하여, 익스텐션 이름과 이전에 작성했던 SQL 스크립
트 파일을 지정합니다.
POSTGRES는 PGXS 라는 빌드 인프라를 통해서 익스텐션을 빌드할 수
있도록 도와줍니다. 다음 문서 를 클릭하면 자세히 확인할 수 있습니다.
이동욱 POSTGRES 익스텐션 만드는 법
7. 빌드 및 설치
터미널
make install
make install 명령어를 통해서 빌드 및 설치를 합니다.
이동욱 POSTGRES 익스텐션 만드는 법
8. 실행
CREATE EXTENSION calculator 명령어로 익스텐션을 설치합니다.
생성했던 함수를 실행시킬 수 있습니다.
이동욱 POSTGRES 익스텐션 만드는 법
참고문헌
Writing Postgres Extensions - the Basics
How to create, test and debug an extension written in C for Post-
greSQL
이동욱 POSTGRES 익스텐션 만드는 법

More Related Content

PDF
pgday-2023
ranaadilstories
 
PPTX
[170410 3주차]C언어 A반
arundine
 
PDF
liftIO 2022 quasiquote
Hyunseok Cho
 
PDF
postgres_빌드_및_디버깅.pdf
Lee Dong Wook
 
PPTX
13장 연산자 오버로딩
유석 남
 
PDF
게임프로그래밍입문 3주차
Yeonah Ki
 
PPTX
Gpg gems1 1.3
david nc
 
PDF
Project#2말의여행 Hwp
Kimjeongmoo
 
pgday-2023
ranaadilstories
 
[170410 3주차]C언어 A반
arundine
 
liftIO 2022 quasiquote
Hyunseok Cho
 
postgres_빌드_및_디버깅.pdf
Lee Dong Wook
 
13장 연산자 오버로딩
유석 남
 
게임프로그래밍입문 3주차
Yeonah Ki
 
Gpg gems1 1.3
david nc
 
Project#2말의여행 Hwp
Kimjeongmoo
 

Similar to POSTGRES_사칙연산_익스텐션만들기.pdf (20)

PDF
Project#3다항식의연산 Hwp
Kimjeongmoo
 
PDF
자료구조3보고서
KimChangHoen
 
PDF
Exception&log
Nam Hyeonuk
 
PDF
Perl Script Document
오석 한
 
PDF
02장 자료형과 연산자
웅식 전
 
PPTX
[아꿈사] The C++ Programming Language 11장 연산자 오버로딩
해강
 
PDF
Perl Script
오석 한
 
PDF
[Pgday.Seoul 2017] 8. PostgreSQL 10 새기능 소개 - 김상기
PgDay.Seoul
 
PPTX
게임프로그래밍입문 7
Yeonah Ki
 
PDF
프로그래머가 알아야 하는 2진수 기반의 컴퓨터 동작 원리
중선 곽
 
PDF
Java Calculator.pdf
tangtang1026
 
PPTX
Windows reversing study_basic_2
J J
 
PPTX
More effective c++ chapter1,2
문익 장
 
PPTX
Taocp 2_4
codevania
 
PDF
자료구조2보고서
KimChangHoen
 
PPTX
(Lisp)
EunPyoung Kim
 
PPTX
파이썬 기초
Yong Joon Moon
 
PPTX
하스켈 프로그래밍 입문 2
Kwang Yul Seo
 
PDF
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
PgDay.Seoul
 
PDF
2012 Ds D2 03 Pdf
kd19h
 
Project#3다항식의연산 Hwp
Kimjeongmoo
 
자료구조3보고서
KimChangHoen
 
Exception&log
Nam Hyeonuk
 
Perl Script Document
오석 한
 
02장 자료형과 연산자
웅식 전
 
[아꿈사] The C++ Programming Language 11장 연산자 오버로딩
해강
 
Perl Script
오석 한
 
[Pgday.Seoul 2017] 8. PostgreSQL 10 새기능 소개 - 김상기
PgDay.Seoul
 
게임프로그래밍입문 7
Yeonah Ki
 
프로그래머가 알아야 하는 2진수 기반의 컴퓨터 동작 원리
중선 곽
 
Java Calculator.pdf
tangtang1026
 
Windows reversing study_basic_2
J J
 
More effective c++ chapter1,2
문익 장
 
Taocp 2_4
codevania
 
자료구조2보고서
KimChangHoen
 
파이썬 기초
Yong Joon Moon
 
하스켈 프로그래밍 입문 2
Kwang Yul Seo
 
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
PgDay.Seoul
 
2012 Ds D2 03 Pdf
kd19h
 
Ad

POSTGRES_사칙연산_익스텐션만들기.pdf

  • 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 익스텐션 만드는 법