Skip to content

Commit 1c43930

Browse files
committed
cleanup & fix failing tests to allow for green merge of pull brianc#228
1 parent 0c487fc commit 1c43930

File tree

6 files changed

+57
-43
lines changed

6 files changed

+57
-43
lines changed

lib/client.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,8 +166,9 @@ p.cancel = function(client, query) {
166166
con.cancel(client.processID, client.secretKey);
167167
});
168168
}
169-
else if (client.queryQueue.indexOf(query) != -1)
169+
else if (client.queryQueue.indexOf(query) != -1) {
170170
client.queryQueue.splice(client.queryQueue.indexOf(query), 1);
171+
}
171172
};
172173

173174
p._pulseQueryQueue = function() {

lib/query.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,18 @@ util.inherits(Query, EventEmitter);
4040
var p = Query.prototype;
4141

4242
p.requiresPreparation = function() {
43-
return (this.values || 0).length > 0 || this.name || this.rows || this.binary;
43+
//named queries must always be prepared
44+
if(this.name) return true;
45+
//always prepare if there are max number of rows expected per
46+
//portal execution
47+
if(this.rows) return true;
48+
//don't prepare empty text queries
49+
if(!this.text) return false;
50+
//binary should be prepared to specify results should be in binary
51+
//unless there are no parameters
52+
if(this.binary && !this.values) return false;
53+
//prepare if there are values
54+
return (this.values || 0).length > 0;
4455
};
4556

4657

@@ -139,7 +150,9 @@ p.prepare = function(connection) {
139150
name: self.name,
140151
types: self.types
141152
}, true);
142-
connection.parsedStatements[this.name] = true;
153+
if(this.name) {
154+
connection.parsedStatements[this.name] = true;
155+
}
143156
}
144157

145158
//TODO is there some better way to prepare values for the database?

test/integration/client/cancel-query-tests.js

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -5,42 +5,42 @@ test("cancellation of a query", function() {
55

66
var client = helper.client();
77

8-
var qry = client.query("select name from person order by name");
8+
var qry = "select name from person order by name";
99

1010
client.on('drain', client.end.bind(client));
1111

12-
var rows1 = 0, rows2 = 0, rows3 = 0, rows4 = 0;
13-
14-
var query1 = client.query(qry);
15-
query1.on('row', function(row) {
16-
rows1++;
17-
});
18-
var query2 = client.query(qry);
19-
query2.on('row', function(row) {
20-
rows2++;
21-
});
22-
var query3 = client.query(qry);
23-
query3.on('row', function(row) {
24-
rows3++;
25-
});
26-
var query4 = client.query(qry);
27-
query4.on('row', function(row) {
28-
rows4++;
29-
});
30-
31-
helper.pg.cancel(helper.config, client, query1);
32-
helper.pg.cancel(helper.config, client, query2);
33-
helper.pg.cancel(helper.config, client, query4);
34-
35-
setTimeout(function() {
36-
assert.equal(rows1, 0);
37-
assert.equal(rows2, 0);
38-
assert.equal(rows4, 0);
39-
}, 2000);
12+
var rows1 = 0, rows2 = 0, rows3 = 0, rows4 = 0;
13+
14+
var query1 = client.query(qry);
15+
query1.on('row', function(row) {
16+
rows1++;
17+
});
18+
var query2 = client.query(qry);
19+
query2.on('row', function(row) {
20+
rows2++;
21+
});
22+
var query3 = client.query(qry);
23+
query3.on('row', function(row) {
24+
rows3++;
25+
});
26+
var query4 = client.query(qry);
27+
query4.on('row', function(row) {
28+
rows4++;
29+
});
30+
31+
helper.pg.cancel(helper.config, client, query1);
32+
helper.pg.cancel(helper.config, client, query2);
33+
helper.pg.cancel(helper.config, client, query4);
34+
35+
setTimeout(function() {
36+
assert.equal(rows1, 0);
37+
assert.equal(rows2, 0);
38+
assert.equal(rows4, 0);
39+
}, 2000);
4040

4141
assert.emits(query3, 'end', function() {
42-
test("returned right number of rows", function() {
43-
assert.equal(rows3, 26);
44-
});
45-
});
42+
test("returned right number of rows", function() {
43+
assert.equal(rows3, 26);
44+
});
45+
});
4646
});

test/integration/client/empty-query-tests.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ test("empty query message handling", function() {
55
assert.emits(client, 'drain', function() {
66
client.end();
77
});
8-
client.query({text: "", binary: false});
8+
client.query({text: ""});
99
});
1010

1111
test('callback supported', assert.calls(function() {
12-
client.query({text: "", binary: false}, function(err, result) {
12+
client.query("", function(err, result) {
1313
assert.isNull(err);
1414
assert.empty(result.rows);
1515
})

test/integration/client/simple-query-tests.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ test("simple query interface", function() {
3838

3939
test("multiple simple queries", function() {
4040
var client = helper.client();
41-
client.query({ text: "create temp table bang(id serial, name varchar(5));insert into bang(name) VALUES('boom');", binary: false })
41+
client.query({ text: "create temp table bang(id serial, name varchar(5));insert into bang(name) VALUES('boom');"})
4242
client.query("insert into bang(name) VALUES ('yes');");
4343
var query = client.query("select name from bang");
4444
assert.emits(query, 'row', function(row) {
@@ -52,9 +52,9 @@ test("multiple simple queries", function() {
5252

5353
test("multiple select statements", function() {
5454
var client = helper.client();
55-
client.query({text: "create temp table boom(age integer); insert into boom(age) values(1); insert into boom(age) values(2); insert into boom(age) values(3)", binary: false});
56-
client.query({text: "create temp table bang(name varchar(5)); insert into bang(name) values('zoom');", binary: false});
57-
var result = client.query({text: "select age from boom where age < 2; select name from bang", binary: false});
55+
client.query("create temp table boom(age integer); insert into boom(age) values(1); insert into boom(age) values(2); insert into boom(age) values(3)");
56+
client.query({text: "create temp table bang(name varchar(5)); insert into bang(name) values('zoom');"});
57+
var result = client.query({text: "select age from boom where age < 2; select name from bang"});
5858
assert.emits(result, 'row', function(row) {
5959
assert.strictEqual(row['age'], 1);
6060
assert.emits(result, 'row', function(row) {

test/test-helper.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ assert.same = function(actual, expected) {
2828
assert.emits = function(item, eventName, callback, message) {
2929
var called = false;
3030
var id = setTimeout(function() {
31-
test("Should have called " + eventName, function() {
31+
test("Should have called '" + eventName + "' event", function() {
3232
assert.ok(called, message || "Expected '" + eventName + "' to be called.")
3333
});
3434
},5000);

0 commit comments

Comments
 (0)