mirror of
https://github.com/brianc/node-postgres.git
synced 2025-12-08 20:16:25 +00:00
using same writer reference to improve performance
This commit is contained in:
parent
eb3e4ca3ab
commit
f13b0ba35c
@ -16,6 +16,7 @@ var Connection = function(config) {
|
||||
this.offset = null;
|
||||
this.encoding = 'utf8';
|
||||
this.parsedStatements = {};
|
||||
this.writer = new Writer();
|
||||
};
|
||||
|
||||
sys.inherits(Connection, EventEmitter);
|
||||
@ -53,14 +54,14 @@ p.connect = function(port, host) {
|
||||
};
|
||||
|
||||
p.startup = function(config) {
|
||||
var bodyBuffer = new Writer()
|
||||
var bodyBuffer = this.writer
|
||||
.addInt16(3)
|
||||
.addInt16(0)
|
||||
.addCString('user')
|
||||
.addCString(config.user)
|
||||
.addCString('database')
|
||||
.addCString(config.database)
|
||||
.addCString('').join();
|
||||
.addCString('').flush();
|
||||
//this message is sent without a code
|
||||
|
||||
var length = bodyBuffer.length + 4;
|
||||
@ -74,7 +75,7 @@ p.startup = function(config) {
|
||||
|
||||
p.password = function(password) {
|
||||
//0x70 = 'p'
|
||||
this.send(0x70, new Writer().addCString(password).join());
|
||||
this.send(0x70, this.writer.addCString(password).flush());
|
||||
};
|
||||
|
||||
p.send = function(code, bodyBuffer) {
|
||||
@ -97,7 +98,7 @@ p.end = function() {
|
||||
|
||||
p.query = function(text) {
|
||||
//0x51 = Q
|
||||
this.send(0x51, new Writer().addCString(text).join());
|
||||
this.send(0x51, this.writer.addCString(text).flush());
|
||||
};
|
||||
|
||||
p.parse = function(query) {
|
||||
@ -111,7 +112,7 @@ p.parse = function(query) {
|
||||
//normalize null type array
|
||||
query.types = query.types || [];
|
||||
var len = query.types.length;
|
||||
var buffer = new Writer()
|
||||
var buffer = this.writer
|
||||
.addCString(query.name) //name of query
|
||||
.addCString(query.text) //actual query text
|
||||
.addInt16(len);
|
||||
@ -120,7 +121,7 @@ p.parse = function(query) {
|
||||
}
|
||||
|
||||
//0x50 = 'P'
|
||||
this.send(0x50, buffer.join());
|
||||
this.send(0x50, buffer.flush());
|
||||
|
||||
return this;
|
||||
};
|
||||
@ -132,7 +133,7 @@ p.bind = function(config) {
|
||||
config.statement = config.statement || '';
|
||||
var values = config.values || [];
|
||||
var len = values.length;
|
||||
var buffer = new Writer()
|
||||
var buffer = this.writer
|
||||
.addCString(config.portal)
|
||||
.addCString(config.statement)
|
||||
.addInt16(0) //always use default text format
|
||||
@ -144,22 +145,22 @@ p.bind = function(config) {
|
||||
} else {
|
||||
val = val.toString();
|
||||
buffer.addInt32(Buffer.byteLength(val));
|
||||
buffer.add(Buffer(val,this.encoding));
|
||||
buffer.addString(val);
|
||||
}
|
||||
}
|
||||
buffer.addInt16(0); //no format codes, use text
|
||||
//0x42 = 'B'
|
||||
this.send(0x42, buffer.join());
|
||||
this.send(0x42, buffer.flush());
|
||||
};
|
||||
|
||||
p.execute = function(config) {
|
||||
config = config || {};
|
||||
config.portal = config.portal || '';
|
||||
config.rows = config.rows || '';
|
||||
var buffer = new Writer()
|
||||
var buffer = this.writer
|
||||
.addCString(config.portal)
|
||||
.addInt32(config.rows)
|
||||
.join();
|
||||
.flush();
|
||||
|
||||
//0x45 = 'E'
|
||||
this.send(0x45, buffer);
|
||||
@ -181,7 +182,7 @@ p.end = function() {
|
||||
};
|
||||
|
||||
p.describe = function(msg) {
|
||||
this.send(0x44, new Writer().addCString(msg.type + (msg.name || '')).join());
|
||||
this.send(0x44, this.writer.addCString(msg.type + (msg.name || '')).flush());
|
||||
};
|
||||
|
||||
//parsing methods
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user