feat: allow specifying a timeout on a per query base (#3074)

This commit is contained in:
srieding 2024-06-19 16:36:35 +02:00 committed by GitHub
parent b7d5b3b667
commit 9baa56eaa2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 17 additions and 2 deletions

View File

@ -514,7 +514,7 @@ class Client extends EventEmitter {
query.callback = query.callback || values
}
} else {
readTimeout = this.connectionParameters.query_timeout
readTimeout = config.query_timeout || this.connectionParameters.query_timeout
query = new Query(config, values, callback)
if (!query.callback) {
result = new this._Promise((resolve, reject) => {

View File

@ -167,7 +167,7 @@ Client.prototype.query = function (config, values, callback) {
config.callback = values
}
} else {
readTimeout = this.connectionParameters.query_timeout
readTimeout = config.query_timeout || this.connectionParameters.query_timeout
query = new NativeQuery(config, values, callback)
if (!query.callback) {
let resolveOut, rejectOut

View File

@ -102,6 +102,21 @@ suite.test('query no timeout', (cb) => {
})
})
suite.test('query with timeout on query basis', (cb) => {
const pool = new pg.Pool()
pool.connect().then((client) => {
client.query(
{text: 'SELECT pg_sleep(20)', query_timeout: 1000},
assert.calls(function (err, result) {
assert(err)
assert(err.message === 'Query read timeout')
client.release()
pool.end(cb)
})
)
})
})
suite.test('callback API', (done) => {
const client = new helper.Client()
client.query('CREATE TEMP TABLE peep(name text)')