Skip to content

Commit 07d531c

Browse files
committed
Tie default DB name to database user name
The previous behaviour was at variance with the native client behaviour, per: https://www.postgresql.org/docs/10/static/libpq-connect.html#LIBPQ-PARAMKEYWORDS > The database name. Defaults to be the same as the user name. > In certain contexts, the value is checked for extended formats...
1 parent 3ac356a commit 07d531c

File tree

2 files changed

+12
-5
lines changed

2 files changed

+12
-5
lines changed

Diff for: lib/connection-parameters.js

+10-3
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ var defaults = require('./defaults')
1313

1414
var parse = require('pg-connection-string').parse // parses a connection string
1515

16-
var val = function (key, config, envVar) {
16+
var val = function (key, config, envVar, computed) {
1717
if (envVar === undefined) {
1818
envVar = process.env[ 'PG' + key.toUpperCase() ]
1919
} else if (envVar === false) {
@@ -22,9 +22,13 @@ var val = function (key, config, envVar) {
2222
envVar = process.env[ envVar ]
2323
}
2424

25+
if (computed === undefined) {
26+
computed = function (key) { return defaults[key] }
27+
}
28+
2529
return config[key] ||
2630
envVar ||
27-
defaults[key]
31+
computed(key)
2832
}
2933

3034
var useSsl = function () {
@@ -50,8 +54,11 @@ var ConnectionParameters = function (config) {
5054
config = Object.assign({}, config, parse(config.connectionString))
5155
}
5256

57+
var dbDefaulting = function () { return this.user || defaults['database'] }
58+
dbDefaulting = dbDefaulting.bind(this)
59+
5360
this.user = val('user', config)
54-
this.database = val('database', config)
61+
this.database = val('database', config, undefined, dbDefaulting)
5562
this.port = parseInt(val('port', config), 10)
5663
this.host = val('host', config)
5764
this.password = val('password', config)

Diff for: test/integration/client/configuration-tests.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,15 @@ suite.test('default values are used in new clients', function () {
4040
suite.test('modified values are passed to created clients', function () {
4141
pg.defaults.user = 'boom'
4242
pg.defaults.password = 'zap'
43-
pg.defaults.database = 'pow'
4443
pg.defaults.port = 1234
4544
pg.defaults.host = 'blam'
4645

4746
var client = new Client()
4847
assert.same(client, {
4948
user: 'boom',
5049
password: 'zap',
51-
database: 'pow',
50+
// default database name is user name
51+
database: 'boom',
5252
port: 1234,
5353
host: 'blam'
5454
})

0 commit comments

Comments
 (0)