Skip to content

Commit 9798622

Browse files
committed
Added test and fixed error returning
1 parent 2196e4c commit 9798622

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

lib/client.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -399,19 +399,20 @@ Client.prototype.query = function (config, values, callback) {
399399
// can take in strings, config object or query object
400400
var query
401401
var result
402+
var readTimeout
403+
var readTimeoutTimer
404+
var queryCallback
402405

403406
if (config === null || config === undefined) {
404407
throw new TypeError('Client was passed a null or undefined query')
405408
} else if (typeof config.submit === 'function') {
406-
var readTimeoutTimer
407-
var queryCallback
408-
var readTimeout = config.query_timeout || this.connectionParameters.query_timeout
409-
409+
readTimeout = config.query_timeout || this.connectionParameters.query_timeout
410410
result = query = config
411411
if (typeof values === 'function') {
412412
query.callback = query.callback || values
413413
}
414414
} else {
415+
readTimeout = this.connectionParameters.query_timeout
415416
query = new Query(config, values, callback)
416417
if (!query.callback) {
417418
result = new this._Promise((resolve, reject) => {
@@ -426,7 +427,9 @@ Client.prototype.query = function (config, values, callback) {
426427
readTimeoutTimer = setTimeout(() => {
427428
var error = new Error('Query read timeout')
428429

429-
this.emit('error', error)
430+
process.nextTick(() => {
431+
query.handleError(error, this.connection)
432+
})
430433

431434
if (typeof queryCallback === 'function') {
432435
queryCallback(error)

test/integration/client/api-tests.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,17 @@ suite.test('pool callback behavior', done => {
1515
})
1616
})
1717

18+
suite.test('query timeout', (cb) => {
19+
const pool = new pg.Pool({query_timeout: 1000})
20+
pool.connect().then((client) => {
21+
client.query('SELECT pg_sleep(2)', assert.calls(function (err, result) {
22+
assert(err)
23+
client.release()
24+
pool.end(cb)
25+
}))
26+
})
27+
})
28+
1829
suite.test('callback API', done => {
1930
const client = new helper.Client()
2031
client.query('CREATE TEMP TABLE peep(name text)')

0 commit comments

Comments
 (0)