diff --git a/package.json b/package.json index 42a546a4..2f50714e 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,6 @@ "mocha": "~1.17.1" }, "dependencies": { - "pg-cursor": "~0.1.2" + "pg-cursor": "0.1.3" } } diff --git a/test/issue-3.js b/test/issue-3.js new file mode 100644 index 00000000..0c822c97 --- /dev/null +++ b/test/issue-3.js @@ -0,0 +1,32 @@ +var pg = require('pg.js') +var QueryStream = require('../') +describe('end semantics race condition', function() { + before(function(done) { + var client = new pg.Client() + client.connect() + client.on('drain', client.end.bind(client)) + client.on('end', done) + client.query('create table IF NOT EXISTS p(id serial primary key)') + client.query('create table IF NOT EXISTS c(id int primary key references p)') + }) + it('works', function(done) { + var client1 = new pg.Client() + client1.connect() + var client2 = new pg.Client() + client2.connect() + + var qr = new QueryStream("INSERT INTO p DEFAULT VALUES RETURNING id") + client1.query(qr) + var id = null + qr.on('data', function(row) { + id = row.id + }) + qr.on('end', function () { + client2.query("INSERT INTO c(id) VALUES ($1)", [id], function (err, rows) { + client1.end() + client2.end() + done(err) + }) + }) + }) +})