mirror of
https://github.com/brianc/node-postgres.git
synced 2026-01-18 15:55:05 +00:00
Working on fixing some timing issues in pg-query-stream it uncovered an issue where the cursor is firing its 'close' callback before it's actually entirely ready to dispatch another query. This change makes the close callback trigger when the connection re-enters `readyForQuery` state.
50 lines
1.3 KiB
JavaScript
50 lines
1.3 KiB
JavaScript
const assert = require('assert')
|
|
const Cursor = require('../')
|
|
const pg = require('pg')
|
|
|
|
const text = 'SELECT generate_series as num FROM generate_series(0, 50)'
|
|
describe('close', function () {
|
|
beforeEach(function (done) {
|
|
const client = (this.client = new pg.Client())
|
|
client.connect(done)
|
|
})
|
|
|
|
this.afterEach(function (done) {
|
|
this.client.end(done)
|
|
})
|
|
|
|
it('can close a finished cursor without a callback', function (done) {
|
|
const cursor = new Cursor(text)
|
|
this.client.query(cursor)
|
|
this.client.query('SELECT NOW()', done)
|
|
cursor.read(100, function (err) {
|
|
assert.ifError(err)
|
|
cursor.close()
|
|
})
|
|
})
|
|
|
|
it('closes cursor early', function (done) {
|
|
const cursor = new Cursor(text)
|
|
this.client.query(cursor)
|
|
this.client.query('SELECT NOW()', done)
|
|
cursor.read(25, function (err) {
|
|
assert.ifError(err)
|
|
cursor.close()
|
|
})
|
|
})
|
|
|
|
it('works with callback style', function (done) {
|
|
const cursor = new Cursor(text)
|
|
const client = this.client
|
|
client.query(cursor)
|
|
cursor.read(25, function (err, rows) {
|
|
assert.ifError(err)
|
|
assert.strictEqual(rows.length, 25)
|
|
cursor.close(function (err) {
|
|
assert.ifError(err)
|
|
client.query('SELECT NOW()', done)
|
|
})
|
|
})
|
|
})
|
|
})
|