Beispiel #1
0
var mapRowData = function(row) {
  var result = {};
  for(var i = 0, len = row.length; i < len; i++) {
    var item = row[i];    
    result[item.name] = item.value == null ? null : types.getTypeParser(item.type, 'text')(item.value);
  }
  return result;
}
Beispiel #2
0
p.handleRowDescription = function(msg) {
  this._fieldNames = [];
  this._fieldConverters = [];
  var len = msg.fields.length;
  for(var i = 0; i < len; i++) {
    var field = msg.fields[i];
    var format = field.format;
    this._fieldNames[i] = field.name;
    this._fieldConverters[i] = Types.getTypeParser(field.dataTypeID, format);
  };
};
Beispiel #3
0
Result.prototype.addFields = function(fieldDescriptions) {
  //clears field definitions
  //multiple query statements in 1 action can result in multiple sets
  //of rowDescriptions...eg: 'select NOW(); select 1::int;'
  //you need to reset the fields
  if(this.fields.length) {
    this.fields = [];
    this._parsers = [];
  }
  for(var i = 0; i < fieldDescriptions.length; i++) {
    var desc = fieldDescriptions[i];
    this.fields.push(desc);
    this._parsers.push(types.getTypeParser(desc.dataTypeID, desc.format || 'text'));
  }
};
Beispiel #4
0
Query.prototype.handleRowDescription = function(msg) {
  this._fieldNames = [];
  this._fieldConverters = [];
  var len = msg.fields.length;
  for(var i = 0; i < len; i++) {
    var field = msg.fields[i];
    var format = field.format;
    var dupecount = 0;
    if(this.uniqueFields) {
      this._fieldNames.forEach(function(val) {if (new RegExp("^"+field.name+"(\\$\\d+)?$").test(val)) { dupecount++;} });
    }
    this._fieldNames[i] = field.name+(dupecount?'$'+dupecount:'') ;
    this._fieldConverters[i] = Types.getTypeParser(field.dataTypeID, format);
  }
  if(this.callback) {
    this._result.addFieldNames(this._fieldNames);
  }
};
Beispiel #5
0
Result.prototype.addFields = function(fieldDescriptions) {
  //clears field definitions
  //multiple query statements in 1 action can result in multiple sets
  //of rowDescriptions...eg: 'select NOW(); select 1::int;'
  //you need to reset the fields
  if(this.fields.length) {
    this.fields = [];
    this._parsers = [];
  }
  var ctorBody = "";
  for(var i = 0; i < fieldDescriptions.length; i++) {
    var desc = fieldDescriptions[i];
    this.fields.push(desc);
    var parser = types.getTypeParser(desc.dataTypeID, desc.format || 'text');
    this._parsers.push(parser);
    //this is some craziness to compile the row result parsing
    //results in ~60% speedup on large query result sets
    ctorBody += inlineParser(desc.name, i);
  }
  this.RowCtor = Function("parsers", "rowData", ctorBody);
};