Skip to content

Commit 8d92172

Browse files
committed
feat: allow specifying a timeout on a per query base
1 parent b1a8947 commit 8d92172

File tree

3 files changed

+17
-2
lines changed

3 files changed

+17
-2
lines changed

packages/pg/lib/client.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -515,7 +515,7 @@ class Client extends EventEmitter {
515515
query.callback = query.callback || values
516516
}
517517
} else {
518-
readTimeout = this.connectionParameters.query_timeout
518+
readTimeout = config.query_timeout || this.connectionParameters.query_timeout
519519
query = new Query(config, values, callback)
520520
if (!query.callback) {
521521
result = new this._Promise((resolve, reject) => {

packages/pg/lib/native/client.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ Client.prototype.query = function (config, values, callback) {
167167
config.callback = values
168168
}
169169
} else {
170-
readTimeout = this.connectionParameters.query_timeout
170+
readTimeout = config.query_timeout || this.connectionParameters.query_timeout
171171
query = new NativeQuery(config, values, callback)
172172
if (!query.callback) {
173173
let resolveOut, rejectOut

packages/pg/test/integration/client/api-tests.js

+15
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,21 @@ suite.test('query no timeout', (cb) => {
102102
})
103103
})
104104

105+
suite.test('query with timeout on query basis', (cb) => {
106+
const pool = new pg.Pool()
107+
pool.connect().then((client) => {
108+
client.query(
109+
{text: 'SELECT pg_sleep(20)', query_timeout: 1000},
110+
assert.calls(function (err, result) {
111+
assert(err)
112+
assert(err.message === 'Query read timeout')
113+
client.release()
114+
pool.end(cb)
115+
})
116+
)
117+
})
118+
})
119+
105120
suite.test('callback API', (done) => {
106121
const client = new helper.Client()
107122
client.query('CREATE TEMP TABLE peep(name text)')

0 commit comments

Comments
 (0)