function getRandomGeneratorForColumn()

in loader/lib/RandomData.js [118:176]


function getRandomGeneratorForColumn(column) {
  var g = {},
      min, max, bits;

  // TODO: This should rely on generic metadata rather than
  // MySQL-specific column type names
  switch(column.columnType.toLocaleUpperCase()) {
    case "TINYINT":
    case "SMALLINT":
    case "MEDIUMINT":
    case "INT":
    case "BIGINT":
      if(column.isInPrimaryKey) {
        g = new SequentialIntGenerator(0);
      }
      else {
        bits = column.intSize * 8;
        max = column.isUnsigned ? Math.pow(2,bits)-1 : Math.pow(2, bits-1);
        min = column.isUnsigned ?                  0 : 1 - max;
        g = new RandomIntGenerator(min, max);
      }
      break;
    case "FLOAT":
    case "DOUBLE":
    case "DECIMAL":
      g = new RandomFloatGenerator(0, 100000); // fixme
      break;
    case "BINARY":
      g = new RandomBinaryGenerator(column.length);
      break;
    case "CHAR":
      g = new RandomCharGenerator(column.length);
      break;
    case "VARBINARY":
      g = new RandomVarbinaryGenerator(column.length);
      break;
    case "VARCHAR":
      g = new RandomVarcharGenerator(column.length);
      break;
    case "TIMESTAMP":
      g = new RandomIntGenerator(0, Math.pow(2,32)-1);
      break;
    case "YEAR":    
      g = new RandomIntGenerator(1900, 2155);
      break;
    case "DATE":
    case "TIME":
    case "DATETIME":
      g = new RandomDateGenerator();
      break;
    // case "BLOB":
    // case "TEXT":
    // case "BIT":
    default:
      throw("UNSUPPORTED COLUMN TYPE " + column.columnType);
  }

  return g;
}