Skip to content

Commit dee3ae5

Browse files
NovikovEvgenyEvgeniy Novikov
and
Evgeniy Novikov
authored
feat: add connection parameter nativeConnectionString (brianc#2941)
Co-authored-by: Evgeniy Novikov <e.p.novikov@tinkoff.ru>
1 parent c38ecf3 commit dee3ae5

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed

packages/pg/lib/native/client.js

+2
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ var Client = (module.exports = function (config) {
3535
// keep these on the object for legacy reasons
3636
// for the time being. TODO: deprecate all this jazz
3737
var cp = (this.connectionParameters = new ConnectionParameters(config))
38+
if (config.nativeConnectionString) cp.nativeConnectionString = config.nativeConnectionString
3839
this.user = cp.user
3940

4041
// "hiding" the password so it doesn't show up in stack traces
@@ -88,6 +89,7 @@ Client.prototype._connect = function (cb) {
8889
this._connecting = true
8990

9091
this.connectionParameters.getLibpqConnectionString(function (err, conString) {
92+
if (self.connectionParameters.nativeConnectionString) conString = self.connectionParameters.nativeConnectionString
9193
if (err) return cb(err)
9294
self.native.connect(conString, function (err) {
9395
if (err) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
'use strict'
2+
var helper = require('../test-helper')
3+
var Client = require('../../lib/native')
4+
const suite = new helper.Suite()
5+
6+
suite.test('respects nativeConnectionString in config', function (done) {
7+
const realPort = helper.config.port
8+
const nativeConnectionString = `host=${helper.config.host} port=${helper.config.port} dbname=${helper.config.database} user=${helper.config.user} password=${helper.config.password}`
9+
10+
// setting wrong port to make sure config is take from nativeConnectionString and not env
11+
helper.config.port = '90929'
12+
13+
var client = new Client({
14+
...helper.config,
15+
nativeConnectionString,
16+
})
17+
18+
client.connect(function (err) {
19+
assert(!err)
20+
client.query(
21+
'SELECT 1 as num',
22+
assert.calls(function (err, result) {
23+
assert(!err)
24+
assert.equal(result.rows[0].num, 1)
25+
assert.strictEqual(result.rowCount, 1)
26+
// restore post in case helper config will be reused
27+
helper.config.port = realPort
28+
client.end(done)
29+
})
30+
)
31+
})
32+
})
33+
34+
suite.test('respects nativeConnectionString in config even when it is corrupted', function (done) {
35+
const nativeConnectionString = `foobar`
36+
37+
var client = new Client({
38+
nativeConnectionString,
39+
})
40+
41+
client.connect(function (err) {
42+
assert(err)
43+
assert.equal(
44+
err.message,
45+
'missing "=" after "foobar" in connection info string\n',
46+
'Connection error should have been thrown'
47+
)
48+
client.end(done)
49+
})
50+
})

0 commit comments

Comments
 (0)