diff --git a/index.js b/index.js index ce8b503b..6556e7ee 100644 --- a/index.js +++ b/index.js @@ -163,13 +163,15 @@ Cursor.prototype._getRows = function(rows, cb) { this.connection.flush() } -Cursor.prototype.end = function(cb) { +// users really shouldn't be calling 'end' here and terminating a connection to postgres +// via the low level connection.end api +Cursor.prototype.end = util.deprecate(function(cb) { if (this.state !== 'initialized') { this.connection.sync() } this.connection.once('end', cb) this.connection.end() -} +}, 'Cursor.end is deprecated. Call end on the client itself to end a connection to the database.') Cursor.prototype.close = function(cb) { if (this.state === 'done') { diff --git a/test/pool.js b/test/pool.js index bd487807..61f5e279 100644 --- a/test/pool.js +++ b/test/pool.js @@ -83,4 +83,25 @@ describe('pool', function() { done() }) }) + + it('can close multiple times on a pool', async function() { + const pool = new pg.Pool({ max: 1 }) + const run = async () => { + const cursor = new Cursor(text) + const client = await pool.connect() + client.query(cursor) + new Promise(resolve => { + cursor.read(25, function(err) { + assert.ifError(err) + cursor.close(function(err) { + assert.ifError(err) + client.release() + resolve() + }) + }) + }) + } + await Promise.all([run(), run(), run()]) + await pool.end() + }) }) diff --git a/test/transactions.js b/test/transactions.js index 37af28c4..f83cc1d7 100644 --- a/test/transactions.js +++ b/test/transactions.js @@ -28,7 +28,7 @@ describe('transactions', () => { await client.end() }) - it.only('can execute multiple statements in a transaction if no data', async () => { + it('can execute multiple statements in a transaction if no data', async () => { const client = new pg.Client() await client.connect() await client.query('begin')