안녕하십니까 질문드립니다.
1. libpq-be.h 의 Port 구조체는 커넥션이 맺어진 후, 채워지게 되나요?
2. 현재 C 라이브러리를 사용하여 외부 함수를 구현하고 있습니다.
ex) 외부 함수의 예
postgres > select get_db_name(); 하면
result > 현재 접속한 db_name 출력
이렇게 외부 함수를 개발할 때, Port 구조체의 내부 값들을 어떻게 가져올 수 있을까요?
제발 가르쳐 주시면 감사하겠습니다.
일반적으로 디비에 접속한 현재 세션의 정보는
select * from pg_stat_get_activity(pg_backend_pid());
쿼리문으로 구합니다.
접속한 디비의 서버 정보는
select * from pg_show_all_settings(); 또는
show port; 와 같이 환견 설정 변수 이름을 show 명령어 뒤에 붙혀 개별적인
굳이 사용자 정의 함수를 만들어야 할 이유가 없어보이네요.
외부함수에서 db 정보를 가져와 뭔가 다른 작업을 하시려는 것 같네요.
1.
구조체에 대한 정보는 PostgreSQL 의 소스 코드를 참고하시면 될것 같아요.
주석으로 설명이 쓰여있습니다.
https://doxygen.postgresql.org/libpq-be_8h_source.html#l00118
2.
extern Port* MyProcPort;
Port *port = MyProcPort;
strcpy(dbName, port->database_name);
사용 방법은 이렇게 접근하면 될 것 같습니다.
필요한 헤더파일은 찾아서 include 하시면 되고요
감사합니다~!
많은 도움이 되었습니다~!!!!