Revert "Stream JSON responses"
This reverts commit 49ef1bc0c7
.
Conflicts:
NEWS.md
This commit is contained in:
parent
55dcb50809
commit
7906707130
3
NEWS.md
3
NEWS.md
@ -1,5 +1,8 @@
|
|||||||
1.10.1 - 2014-mm-dd
|
1.10.1 - 2014-mm-dd
|
||||||
-------------------
|
-------------------
|
||||||
|
Bug fixes:
|
||||||
|
|
||||||
|
* Backing out Stream JSON responses
|
||||||
|
|
||||||
1.10.0 - 2014-06-04
|
1.10.0 - 2014-06-04
|
||||||
-------------------
|
-------------------
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
var pg = require('./pg');
|
var pg = require('./pg');
|
||||||
var util = require('util');
|
|
||||||
|
|
||||||
function json() {}
|
function json() {}
|
||||||
|
|
||||||
@ -43,96 +42,23 @@ p.formatResultFields = function(flds) {
|
|||||||
return nfields;
|
return nfields;
|
||||||
}
|
}
|
||||||
|
|
||||||
p.startStreaming = function() {
|
|
||||||
if ( this.opts.profiler ) this.opts.profiler.done('startStreaming');
|
p.transform = function(result, options, callback) {
|
||||||
this.total_rows = 0;
|
var j = {
|
||||||
if ( this.opts.beforeSink ) {
|
time: options.total_time,
|
||||||
this.opts.beforeSink();
|
fields: this.formatResultFields(result.fields),
|
||||||
delete this.opts.beforeSink;
|
total_rows: result.rowCount,
|
||||||
|
rows: result.rows
|
||||||
}
|
}
|
||||||
var out = '{"rows":[';
|
|
||||||
this.opts.sink.write(out);
|
|
||||||
this._streamingStarted = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
p.handleQueryRow = function(row) {
|
|
||||||
if ( ! this._streamingStarted ) {
|
|
||||||
this.startStreaming();
|
|
||||||
}
|
|
||||||
var sf = this.opts.skipfields;
|
|
||||||
if ( sf.length ){
|
|
||||||
for ( var j=0; j<sf.length; ++j ) {
|
|
||||||
delete row[sf[j]];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var out = ( this.total_rows ? ',' : '' ) + JSON.stringify(row);
|
|
||||||
this.opts.sink.write(out);
|
|
||||||
this.total_rows++;
|
|
||||||
}
|
|
||||||
|
|
||||||
p.handleQueryEnd = function(result) {
|
|
||||||
if ( this.error ) {
|
|
||||||
this.callback(this.error);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( this.opts.profiler ) this.opts.profiler.done('gotRows');
|
|
||||||
|
|
||||||
//console.log("Got query end, result is "); console.dir(result);
|
|
||||||
|
|
||||||
if ( ! this._streamingStarted ) {
|
|
||||||
this.startStreaming();
|
|
||||||
}
|
|
||||||
|
|
||||||
var end = Date.now();
|
|
||||||
this.opts.total_time = (end - this.start_time)/1000;
|
|
||||||
|
|
||||||
// Drop field description for skipped fields
|
|
||||||
var newfields = [];
|
|
||||||
var sf = this.opts.skipfields;
|
|
||||||
if ( sf.length ){
|
|
||||||
for ( var j=0; j<result.fields.length; ++j ) {
|
|
||||||
var f = result.fields[j];
|
|
||||||
if ( sf.indexOf(f.name) == -1 ) newfields.push(f);
|
|
||||||
}
|
|
||||||
result.fields = newfields;
|
|
||||||
}
|
|
||||||
|
|
||||||
var end = Date.now();
|
|
||||||
var total_time = (end - this.start_time)/1000;
|
|
||||||
|
|
||||||
var out = [
|
|
||||||
'],', // end of "rows" array
|
|
||||||
'"time":', JSON.stringify(total_time),
|
|
||||||
',"fields":', JSON.stringify(this.formatResultFields(result.fields)),
|
|
||||||
',"total_rows":', JSON.stringify(result.rowCount)
|
|
||||||
];
|
|
||||||
|
|
||||||
if ( result.notices ) {
|
if ( result.notices ) {
|
||||||
var j = {};
|
|
||||||
for (var i=0; i<result.notices.length; ++i) {
|
for (var i=0; i<result.notices.length; ++i) {
|
||||||
var m = result.notices[i];
|
var m = result.notices[i];
|
||||||
var l = m.severity.toLowerCase() + 's';
|
var l = m.severity.toLowerCase() + 's';
|
||||||
if ( ! j[l] ) j[l] = [];
|
if ( ! j[l] ) j[l] = [];
|
||||||
j[l].push(m.message);
|
j[l].push(m.message);
|
||||||
}
|
}
|
||||||
for (var s in j) {
|
|
||||||
out.push(',"' + s + '":');
|
|
||||||
out.push( JSON.stringify(j[s]) );
|
|
||||||
}
|
|
||||||
delete j;
|
|
||||||
}
|
}
|
||||||
|
callback(null, j);
|
||||||
out.push('}');
|
};
|
||||||
|
|
||||||
while (out.length) {
|
|
||||||
var cmp = out.shift();
|
|
||||||
this.opts.sink.write(cmp);
|
|
||||||
}
|
|
||||||
this.opts.sink.end();
|
|
||||||
if ( this.opts.profiler ) this.opts.profiler.done('endStreaming');
|
|
||||||
|
|
||||||
this.callback();
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = json;
|
module.exports = json;
|
||||||
|
Loading…
Reference in New Issue
Block a user