work on named queries

This commit is contained in:
brianc 2011-03-05 12:01:57 -06:00
parent 0d7822d1cd
commit 941b2e298d
3 changed files with 42 additions and 6 deletions

View File

@ -65,7 +65,10 @@ p._pulseQueryQueue = function() {
return;
}
this._activeQuery = query;
if(query.values) {
if(query.name) {
this._sendPrepare(query.name, query.text, (query.values||[]).length);
}
else if(query.values) {
//call native function
this._sendQueryWithParams(query.text, query.values)
} else {
@ -109,6 +112,7 @@ var NativeQuery = function(text, values, callback) {
if(typeof text == 'object') {
this.text = text.text;
this.values = text.values;
this.name = text.name;
} else {
this.text = text;
this.callback = callback;
@ -121,9 +125,6 @@ var NativeQuery = function(text, values, callback) {
if(this.callback) {
this.rows = [];
}
if(typeof this.text != 'string') {
throw new Error("No query text")
}
//normalize values
if(this.values) {
for(var i = 0, len = this.values.length; i < len; i++) {

View File

@ -75,6 +75,8 @@ public:
NODE_SET_PROTOTYPE_METHOD(t, "connect", Connect);
NODE_SET_PROTOTYPE_METHOD(t, "_sendQuery", SendQuery);
NODE_SET_PROTOTYPE_METHOD(t, "_sendQueryWithParams", SendQueryWithParams);
NODE_SET_PROTOTYPE_METHOD(t, "_sendPrepare", SendPrepare);
NODE_SET_PROTOTYPE_METHOD(t, "_sendQueryPrepared", SendQueryPrepared);
NODE_SET_PROTOTYPE_METHOD(t, "end", End);
target->Set(String::NewSymbol("Connection"), t->GetFunction());
@ -177,6 +179,29 @@ public:
return cString;
}
//v8 entry point into Connection#_sendPrepare
static Handle<Value>
SendPrepare(const Arguments& args)
{
HandleScope scope;
Connection *self = ObjectWrap::Unwrap<Connection>(args.This());
String::Utf8Value queryName(args[0]);
String::Utf8Value queryText(args[1]);
self->SendPrepare(*queryName, *queryText, 0);
return Undefined();
}
static Handle<Value>
SendQueryPrepared(const Arguments& args)
{
HandleScope scope;
Connection *self = ObjectWrap::Unwrap<Connection>(args.This());
return Undefined();
}
//v8 entry point into Connection#end
static Handle<Value>
End(const Arguments& args)
@ -232,6 +257,11 @@ protected:
return PQsendQueryParams(connection_, command, nParams, NULL, paramValues, NULL, NULL, 0);
}
int SendPrepare(const char *name, const char *command, const int nParams)
{
return PQsendPrepare(connection_, name, command, nParams, NULL);
}
//flushes socket
void Flush()
{

View File

@ -4,7 +4,7 @@ test("noData message handling", function() {
var client = helper.client();
client.query({
var q = client.query({
name: 'boom',
text: 'create temp table boom(id serial, size integer)'
});
@ -13,6 +13,11 @@ test("noData message handling", function() {
name: 'insert',
text: 'insert into boom(size) values($1)',
values: [100]
}, function(err, result) {
if(err) {
console.log(err);
throw err;
}
});
client.query({