database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Devel 10432 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 10432
windows 환경에서 pg_hint_plan 빌드하기
작성자
김상기(ioseph)
작성일
2023-05-16 11:06ⓒ
2023-05-16 14:28ⓜ
조회수
794

이 글은 이 글을 쓰는 시점과 그 비슷한 시기(적어도 1년 이내) 정도에 쓸모 있는 글입니다.

세월 지나면 그다지 쓸모 없어질 것입니다.

windows 11 환경 (cpu는 인텔, int 비트는 64 비트, x86_64 )  에서 빌드해 보았습니다.

plpython, openssl, .... 이런 부가 모듈들을 모두 제외한 빌드였습니다.


출발은


https://www.postgresql.org/docs/current/install-windows.html

페이지 글이고요.


Visual Studio 2022 커뮤니티 버전을 설치하고,


windows 용 perl을 설치해야하는데,

windows 용으로 제일 유명한 ActiveState Perl 로는 빌드가 되지 않았습니다.

(이 빌드 실패가 이 perl 문제 였다는 것을 알게되는데까지 시간이 꽤 걸렸습니다.)

다음 방법으로 다른 perl을 찾았고, Strawberry Perl 설치하고,

윗 빌드 문서 대로 해서 잘 설치되었습니다.


perl 실행 환경과 msvc 빌드환경이 통합되어야 함으로,

msvc 명령행 환경 실행해서 쉘 창을 연 뒤, perl 실행 환경 배치 파일도 실행해서 통합니다.

다음 build 작업을 하면 됩니다.


다음 pg_hint_plan 모듈을 구하고, 빌드하기 - 이것도 꽤 오랜 시행 착오가 있었습니다.

일단 pg_hint_plan 모듈을 postgresql 버전별로 소스 패키지를 따로 배포합니다.

https://github.com/ossc-db/pg_hint_plan/releases


해당 디비 버전 전에 맞는 소스를 구해서,

postgresql src 안 contrib 안으로 pg_hint_plan 으로 압축을 풀어두고, contrib/Makefile 안에 pg_hint_plan 모듈을 추가합니다.

SUBDIRS 값으로 추가하는거죠. 보면 쉽게 이해할겁니다.


다음 \src\tools\msvc 안으로 가서 build 작업을 다시 합니다.

그러면,

소스 최상위 디렉터리에, pg_hint_plan.vcxproj 파일이 만들어지고, build는 plpgsql.h 파일이 없어 빌드를 실패한다고 합니다.


여기서 꼼수,

제가 MS 빌드에 대해서 잘 몰라서 제가 한 방법은

일단 perl 환경과, msvs ide 환경이 통합된 환경으로 비주얼 스튜디오 ide를 열고, pgsql.sln 솔루션 파일을 열고,

pg_hint_plan 프로젝트의 header 참조 디렉터리를 추가하고, (src/pl/plpgsql/src 입니다)

ide 안에서 pg_hint_plan 프로젝트를 빌드하는 것이였습니다.

아무튼 이렇게 하면 빌드됩니다.


다음은 쉘에서 install.bat 작업으로 다시 설치하면 pg_hint_plan.dll 파일이 엔진 lib 디렉터리 안에 잘 설치됩니다.


꽤 긴시간의 시행착오와 꼼수를 난발한 빌드 작업이었습니다. 오래간만에 windows 에서 재미나게 놀았네요.


이렇게 만들어진 dll 파일이

https://github.com/i0seph/pg_hint_plan_windows_binary/releases/download/v1.5/pg_hint_plan.dll

이놈입니다.

나머지 필요한 것은 소스 파일에서 가져와 쓰세요.


이 dll 사용 조건이

윈도우즈 11, 64bit

마이크로소스트 VC++ 재배포 런타임 라이브러리는 VCRUNTIME140.dll

PostgreSQL 15 버전 (이 postgres.exe 파일의 dll 의존성이 윗 라이브러리를 참조하는 경우에만 해당합니다.)

이 조건이면 빌드 안하고 써도 될거에요.


 

[Top]
No.
제목
작성자
작성일
조회
10432windows 환경에서 pg_hint_plan 빌드하기
김상기
2023-05-16
794
10420plpython3u 확장 모듈을 이용한 사용자 정의 함수 본문 코드 숨기기
김상기
2023-04-28
827
9594한글 두벌식 자판 영타 변환 [1]
김상기
2015-09-22
6321
9488testsearch-ja 모듈을 이용한 우리말 full text search [1]
김상기
2014-11-25
8746
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다