diff --git a/lib/Client.js b/lib/Client.js index 7b5979b..c035056 100644 --- a/lib/Client.js +++ b/lib/Client.js @@ -648,7 +648,9 @@ Client.prototype._format_value = function(v) { for (var i = 0, len = v.length; i < len; ++i) r.push(this._format_value(v[i])); return r.join(','); - } else if (v !== null && v !== undefined) + } else if (Object.getPrototypeOf(v) == Number.prototype) + return v.toString(); + else if (v !== null && v !== undefined) return "'" + Client.escape(v + '') + "'"; return 'NULL'; diff --git a/test/test.js b/test/test.js index 0eeda1a..eb0226c 100644 --- a/test/test.js +++ b/test/test.js @@ -34,22 +34,22 @@ var tests = [ run: function() { var client = new Client(); var fn; - fn = client.prepare("SELECT * FROM foo WHERE id = '123'"); - assert.strictEqual(fn({ id: 456 }), - "SELECT * FROM foo WHERE id = '123'"); - fn = client.prepare("SELECT * FROM foo WHERE id = :id"); - assert.strictEqual(fn({ id: 123 }), - "SELECT * FROM foo WHERE id = '123'"); - assert.strictEqual(fn({ id: 456 }), - "SELECT * FROM foo WHERE id = '456'"); - fn = client.prepare("SELECT * FROM foo WHERE id = ?"); - assert.strictEqual(fn([123]), - "SELECT * FROM foo WHERE id = '123'"); - assert.strictEqual(fn([456]), - "SELECT * FROM foo WHERE id = '456'"); - fn = client.prepare("SELECT * FROM foo WHERE id = :0 AND name = :1"); - assert.strictEqual(fn(['123', 'baz']), - "SELECT * FROM foo WHERE id = '123' AND name = 'baz'"); + fn = client.prepare("SELECT * FROM foo WHERE id = 'ABC' LIMIT 123"); + assert.strictEqual(fn({ id: 'DEF', limit: 456 }), + "SELECT * FROM foo WHERE id = 'ABC' LIMIT 123"); + fn = client.prepare("SELECT * FROM foo WHERE id = :id LIMIT :limit"); + assert.strictEqual(fn({ id: 'ABC', limit: 123 }), + "SELECT * FROM foo WHERE id = 'ABC' LIMIT 123"); + assert.strictEqual(fn({ id: 'DEF', limit: 456 }), + "SELECT * FROM foo WHERE id = 'DEF' LIMIT 456"); + fn = client.prepare("SELECT * FROM foo WHERE id = ? LIMIT ?"); + assert.strictEqual(fn(['ABC', 123]), + "SELECT * FROM foo WHERE id = 'ABC' LIMIT 123"); + assert.strictEqual(fn(['DEF', 456]), + "SELECT * FROM foo WHERE id = 'DEF' LIMIT 456"); + fn = client.prepare("SELECT * FROM foo WHERE id = :0 AND name = :1 LIMIT :2"); + assert.strictEqual(fn(['ABC', 'baz', 123]), + "SELECT * FROM foo WHERE id = 'ABC' AND name = 'baz' LIMIT 123"); // Edge cases fn = client.prepare("SELECT * FROM foo WHERE id = :id"