Test to assert interspersed messages do not break COPY TO flow
This commit is contained in:
parent
5fec3a5cc1
commit
0c787920a4
@ -117,6 +117,40 @@ var testNoticeResponse = function() {
|
||||
}
|
||||
testNoticeResponse();
|
||||
|
||||
var warnAndReturnOne = `
|
||||
CREATE OR REPLACE FUNCTION pg_temp.test_warn_return_one()
|
||||
RETURNS INTEGER
|
||||
AS $$
|
||||
BEGIN
|
||||
RAISE WARNING 'hey, this is returning one';
|
||||
RETURN 1;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql`;
|
||||
|
||||
var testInterspersedMessageDoesNotBreakCopyFlow = function() {
|
||||
var toClient = client();
|
||||
toClient.query(warnAndReturnOne, (err, res) => {
|
||||
var q = "COPY (SELECT * FROM pg_temp.test_warn_return_one()) TO STDOUT WITH (FORMAT 'csv', HEADER true)";
|
||||
var stream = toClient.query(copy(q));
|
||||
var done = gonna('got expected COPY TO payload', 1000, function() {
|
||||
toClient.end();
|
||||
});
|
||||
|
||||
stream.pipe(concat(function(buf) {
|
||||
res = buf.toString('utf8')
|
||||
}));
|
||||
|
||||
stream.on('end', function() {
|
||||
var expected = "test_warn_return_one\n1\n";
|
||||
assert.equal(res, expected);
|
||||
// note the header counts as a row
|
||||
assert.equal(stream.rowCount, 2, 'should have rowCount = 2 but got ' + stream.rowCount);
|
||||
done();
|
||||
});
|
||||
});
|
||||
};
|
||||
testInterspersedMessageDoesNotBreakCopyFlow();
|
||||
|
||||
var testClientReuse = function() {
|
||||
var c = client();
|
||||
var limit = 100000;
|
||||
|
Loading…
Reference in New Issue
Block a user