최신 PostgreSQL 연결 프로토콜에 서버 버전을 나타내는 것이 있습니까?
그렇지 않은 경우 엔드 포인트가 열린 연결에 대해 실행하여 버전을 포함 할 서버 세부 정보를 가져올 수있는 특별한 저수준 요청이 있습니까?
나는 모든 새로운 연결시 서버 버전을 자동으로 제공하는 node-postgres 의 가능한 확장을 찾고 있습니다. 그리고 이것이 가능한지 알고 싶습니다.
SELECT version()
모든 새로운 연결에 대해 실행 한 다음이를 구문 분석해야하는 것은 연결을 관리하는 기본 드라이버에 비해 너무 높은 수준입니다. 프로토콜 수준에서 수행되어야합니다.
약간의 조사 끝에 PostgreSQL이 연결 중에 시작 메시지 내에서 서버 버전을 제공한다는 것을 발견했습니다 .
특히 node-postgres 드라이버 내에서 Pool 이 연결에서 이벤트를 처리 하고 서버 버전을 노출 하는 사용자 지정 클라이언트 를 제공 하도록 만들 수 있습니다 parameterStatus
.
const {Client, Pool} = require('pg');
class MyClient extends Client {
constructor(config) {
super(config);
this.connection.on('parameterStatus', msg => {
if (msg.parameterName === 'server_version') {
this.version = msg.parameterValue;
}
});
}
}
const cn = {
database: 'my-db',
user: 'postgres',
password: 'bla-bla',
Client: MyClient // here's our custom Client type
};
const pool = new Pool(cn);
pool.connect()
.then(client => {
console.log('Server Version:', client.version);
client.release(true);
})
.catch(console.error);
내 테스트 PC에서 PostgreSQL v11.2를 사용하므로이 테스트는 다음을 출력합니다.
Server Version: 11.2
최신 정보
라이브러리 pg-promise 가 TypeScript에서 동일한 기능을 지원하도록 업데이트되었습니다. 그리고이 티켓 에서 완전한 예를 찾을 수 있습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다