From 721cf56eb331bd35243c1425095b98cf09adf814 Mon Sep 17 00:00:00 2001 From: Julian Birch Date: Sun, 19 Dec 2010 09:41:11 +0000 Subject: [PATCH 1/2] Rows are now associative arrays rather than straight arrays. --- lib/.query.js.swp | Bin 0 -> 16384 bytes lib/query.js | 2 +- test/integration/client/simple-query-tests.js | 13 ++++++++++++- test/integration/client/test-helper.js | 11 +++++++++++ test/test-helper.js | 10 ++++++++++ 5 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 lib/.query.js.swp diff --git a/lib/.query.js.swp b/lib/.query.js.swp new file mode 100644 index 0000000000000000000000000000000000000000..dff0d158697114f794f9e55fe9e19677e19756e2 GIT binary patch literal 16384 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 Igp3*g0u*#R&j0`b literal 0 HcmV?d00001 diff --git a/lib/query.js b/lib/query.js index e8a458a11..66b617203 100644 --- a/lib/query.js +++ b/lib/query.js @@ -43,7 +43,7 @@ p.submit = function(connection) { }; }; var handleDatarow = function(msg) { - var result = []; + var result = {}; for(var i = 0; i < msg.fields.length; i++) { var rawValue = msg.fields[i]; result[names[i]] = rawValue === null ? null : converters[i](rawValue); diff --git a/test/integration/client/simple-query-tests.js b/test/integration/client/simple-query-tests.js index 0452bc9f0..a04590940 100644 --- a/test/integration/client/simple-query-tests.js +++ b/test/integration/client/simple-query-tests.js @@ -4,7 +4,7 @@ test("simple query interface", function() { var client = helper.client(); - var query = client.query("select name from person"); + var query = client.query("select name from person order by name"); client.on('drain', client.end.bind(client)); @@ -12,6 +12,17 @@ test("simple query interface", function() { query.on('row', function(row) { rows.push(row['name']) }); + query.once('row', function(row) { + test('Can iterate through columns', function () { + var columnCount = 0; + for (column in row) { + columnCount++; + }; + if ('length' in row) { + assert.length(row, columnCount, 'Iterating through the columns gives a different length from calling .length.'); + } + }); + }); assert.emits(query, 'end', function() { test("returned right number of rows", function() { diff --git a/test/integration/client/test-helper.js b/test/integration/client/test-helper.js index 03ace9136..3e7785aba 100644 --- a/test/integration/client/test-helper.js +++ b/test/integration/client/test-helper.js @@ -10,6 +10,17 @@ module.exports = { host: helper.args.host, port: helper.args.port }); + client.on('error', function(e, d) { + console.log(e); + }); + var rawQuery = client.query; + client.query = function() { + var q = rawQuery.apply(this, arguments); + q.on('error', function(e) { + console.log(e); + }); + return q; + }; client.connect(); return client; }, diff --git a/test/test-helper.js b/test/test-helper.js index 7e32022b0..6c85558a7 100644 --- a/test/test-helper.js +++ b/test/test-helper.js @@ -10,6 +10,15 @@ buffers = require(__dirname + '/test-buffers'); Connection = require('connection'); var args = require(__dirname + '/cli'); +process.on('uncaughtException', function(d) { + if ('stack' in d && 'message' in d) { + console.log("Message: " + d.message); + console.log(d.stack); + } else { + console.log(d); + } +}); + assert.same = function(actual, expected) { for(var key in expected) { assert.equal(actual[key], expected[key]); @@ -102,6 +111,7 @@ assert.isNull = function(item, message) { test = function(name, action) { test.testCount ++; + console.log('\n' + name); var result = action(); if(result === false) { test.ignored.push(name); From 31cf38c576f78a69f4287ce75a9b56e749b2e55c Mon Sep 17 00:00:00 2001 From: Julian Birch Date: Sun, 19 Dec 2010 09:42:34 +0000 Subject: [PATCH 2/2] Added vim swap files to the .gitignore --- .gitignore | 1 + lib/.query.js.swp | Bin 16384 -> 0 bytes 2 files changed, 1 insertion(+) delete mode 100644 lib/.query.js.swp diff --git a/.gitignore b/.gitignore index a86636e76..bfc1efa34 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /.emacs-project +*.swp diff --git a/lib/.query.js.swp b/lib/.query.js.swp deleted file mode 100644 index dff0d158697114f794f9e55fe9e19677e19756e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 Igp3*g0u*#R&j0`b