diff --git a/packages/pg-connection-string/index.d.ts b/packages/pg-connection-string/index.d.ts index b1b7abd9c..3081270e2 100644 --- a/packages/pg-connection-string/index.d.ts +++ b/packages/pg-connection-string/index.d.ts @@ -11,4 +11,5 @@ export interface ConnectionOptions { application_name?: string fallback_application_name?: string + options?: string } diff --git a/packages/pg-connection-string/test/parse.js b/packages/pg-connection-string/test/parse.js index 957f06441..035b025d1 100644 --- a/packages/pg-connection-string/test/parse.js +++ b/packages/pg-connection-string/test/parse.js @@ -188,10 +188,10 @@ describe('parse', function () { subject.fallback_application_name.should.equal('TheAppFallback') }) - it('configuration parameter fallback_application_name', function () { - var connectionString = 'pg:///?fallback_application_name=TheAppFallback' + it('configuration parameter options', function () { + var connectionString = 'pg:///?options=-c geqo=off' var subject = parse(connectionString) - subject.fallback_application_name.should.equal('TheAppFallback') + subject.options.should.equal('-c geqo=off') }) it('configuration parameter ssl=true', function () { diff --git a/packages/pg/lib/connection-parameters.js b/packages/pg/lib/connection-parameters.js index e1d838929..546682521 100644 --- a/packages/pg/lib/connection-parameters.js +++ b/packages/pg/lib/connection-parameters.js @@ -70,6 +70,7 @@ var ConnectionParameters = function (config) { }) this.binary = val('binary', config) + this.options = val('options', config) this.ssl = typeof config.ssl === 'undefined' ? readSSLConfigFromEnvironment() : config.ssl @@ -126,6 +127,7 @@ ConnectionParameters.prototype.getLibpqConnectionString = function (cb) { add(params, this, 'application_name') add(params, this, 'fallback_application_name') add(params, this, 'connect_timeout') + add(params, this, 'options') var ssl = typeof this.ssl === 'object' ? this.ssl : this.ssl ? { sslmode: this.ssl } : {} add(params, ssl, 'sslmode') diff --git a/packages/pg/lib/defaults.js b/packages/pg/lib/defaults.js index 394216680..e28794dba 100644 --- a/packages/pg/lib/defaults.js +++ b/packages/pg/lib/defaults.js @@ -53,6 +53,8 @@ module.exports = { fallback_application_name: undefined, + options: undefined, + parseInputDatesAsUTC: false, // max milliseconds any query using this connection will execute for before timing out in error. diff --git a/packages/pg/test/integration/client/configuration-tests.js b/packages/pg/test/integration/client/configuration-tests.js index 0737a79c3..e09b85119 100644 --- a/packages/pg/test/integration/client/configuration-tests.js +++ b/packages/pg/test/integration/client/configuration-tests.js @@ -26,6 +26,7 @@ suite.test('default values are used in new clients', function () { application_name: undefined, fallback_application_name: undefined, parseInputDatesAsUTC: false, + options: undefined, }) var client = new pg.Client() @@ -43,6 +44,7 @@ suite.test('modified values are passed to created clients', function () { pg.defaults.database = 'pow' pg.defaults.port = 1234 pg.defaults.host = 'blam' + pg.defaults.options = 'cats' var client = new Client() assert.same(client, { @@ -51,6 +53,9 @@ suite.test('modified values are passed to created clients', function () { database: 'pow', port: 1234, host: 'blam', + connectionParameters: { + options: 'cats', + }, }) }) diff --git a/packages/pg/test/unit/connection-parameters/creation-tests.js b/packages/pg/test/unit/connection-parameters/creation-tests.js index 820b320a5..fb01b1118 100644 --- a/packages/pg/test/unit/connection-parameters/creation-tests.js +++ b/packages/pg/test/unit/connection-parameters/creation-tests.js @@ -25,6 +25,7 @@ var compare = function (actual, expected, type) { assert.equal(actual.password, expected.password, type + ' password') assert.equal(actual.binary, expected.binary, type + ' binary') assert.equal(actual.statement_timeout, expected.statement_timeout, type + ' statement_timeout') + assert.equal(actual.options, expected.options, type + ' options') assert.equal( actual.idle_in_transaction_session_timeout, expected.idle_in_transaction_session_timeout, @@ -48,12 +49,14 @@ test('ConnectionParameters initializing from defaults with connectionString set' binary: defaults.binary, statement_timeout: false, idle_in_transaction_session_timeout: false, + options: '-c geqo=off', } var original_value = defaults.connectionString // Just changing this here doesn't actually work because it's no longer in scope when viewed inside of // of ConnectionParameters() so we have to pass in the defaults explicitly to test it - defaults.connectionString = 'postgres://brians-are-the-best:mypassword@foo.bar.net:7777/scoobysnacks' + defaults.connectionString = + 'postgres://brians-are-the-best:mypassword@foo.bar.net:7777/scoobysnacks?options=-c geqo=off' var subject = new ConnectionParameters(defaults) defaults.connectionString = original_value compare(subject, config, 'defaults-connectionString') @@ -73,6 +76,7 @@ test('ConnectionParameters initializing from config', function () { }, statement_timeout: 15000, idle_in_transaction_session_timeout: 15000, + options: '-c geqo=off', } var subject = new ConnectionParameters(config) compare(subject, config, 'config')