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 Q&A 10098 게시물 읽기
No. 10098
pl/pgsql C 라이브러리이용 함수 만들기 에러 문의
작성자
lucky
작성일
2019-08-07 14:10
조회수
3,193

 안녕하세요 

v9.3 에서 사용중인 a.so 라는 라이브러리를 

v10 에서 make 하여 a.so 를 생성하는 것 까지는 되었는데, 

a.so 를 이용하여 

create or relpace 함수를 하니 다음과 같은 에러가 발생을 합니다. 

ERROR:  could not find function information for function "aaa_fnc"
HINT:  SQL-callable functions need an accompanying PG_FUNCTION_INFO_V1(funcname).
********** Error **********
 
찾아봐도 답이 없어 문의드립니다. 
아래의 문서를 봐도 잘 모르겠습니다. 
컨버전을 하라는 말인지요? 
이 글에 대한 댓글이 총 3건 있습니다.

 힌트대로라면, a.so 를 만들었던 a.c 파일안에,

 PG_FUNCTION_INFO_V1(aaa_fnc);

이 줄이 있어야 한다는 것입니다. 

김상기(ioseph)님이 2019-08-08 14:42에 작성한 댓글입니다.

PG_FUNCTION_INFO_V1 넣어서 컴파일까지 했는데 안됩니다. 

10버전 이상부터는 V1 의 구문만을 지원하는것 같은 불길한 예감이 드네요. 

https://www.postgresql.org/docs/8.2/xfunc-c.html

V0 와 V1 은 완전히 다른 언어같은 느낌입니다. 

리턴값하고 파라미터를 완전히 컨버전해야지만 작동하는 것 같습니다. 

Datum, PG_FUNCTION_ARGS 

하고 함수 소스 자체도 바꾸어야 한다는 건지 

해보신 분 있으면 조언 부탁드리겠습니다 ㅠㅠ 

lucky님이 2019-08-09 09:18에 작성한 댓글입니다. Edit

아.. 네, 10버전부터 아에 V0 방식을 지원하지 않습니다. 

20년도 넘었는데... 그 사이 준비를 하셔야 했었는데...

 

여튼, 함수 입력 인자 처리 부분과 반환 자료형 처리하는 부분이 약간 바뀌었습니다. 

그렇게 많이 고치지는 않습니다. 

 

힌트는 src/contrib 안에 있는 확장모듈을 참조하시면 됩니다. 

제가 작업 했을 때는 intarray 를 참조했었어요. 이 모듈은 아주 오래전부터 있어서, 최신 코드와 아주 옛날 코드를 비교하면, V1 매크로 사용할 때, 코드가 어떻게 바뀌었는지 비교할 수 있거든요. 

 

 

김상기(ioseph)님이 2019-08-09 10:55에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
10102오라클->Postgresql WITH RECURSIVE로 변환하는 방법문의 [2]
김성훈
2019-08-22
3348
10101Master -> Slave 서버로 전환되는 조건 [2]
뿔보
2019-08-21
2897
10099pgadmin4 질문입니다. [2]
나그네
2019-08-08
2726
10098pl/pgsql C 라이브러리이용 함수 만들기 에러 문의 [3]
lucky
2019-08-07
3193
10097export 시에 데이터 자릿수가 잘리는 현상 [1]
rla01234
2019-08-07
2974
10096pgAdmin 사용자 접속 [2]
이병준
2019-08-06
2867
10095데이터 이관 문의 [1]
조홍래
2019-08-02
2821
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.048초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다