This repository has been archived on 2018-10-12. You can view files and clone it, but cannot push or open issues or pull requests.
node-task/node_modules/mysql2/benchmarks/ruby-mysql2/populate.js

83 lines
2.3 KiB
JavaScript

var common = require('../../test/common');
var connection = common.createConnection();
var assert = require('assert');
var Faker = require('charlatan');
var fs = require('fs');
var createSql = fs.readFileSync('./schema.sql').toString();
// use seed to make it consistent between runs
// copy-paste from http://stackoverflow.com/questions/521295/javascript-random-seeds
var m_w = 123456789;
var m_z = 987654321;
var mask = 0xffffffff;
// Takes any integer
function seed(i) {
m_w = i;
}
// Returns number between 0 (inclusive) and 1.0 (exclusive),
// just like Math.random().
function rand()
{
m_z = (36969 * (m_z & 65535) + (m_z >> 16)) & mask;
m_w = (18000 * (m_w & 65535) + (m_w >> 16)) & mask;
var result = ((m_z << 16) + m_w) & mask;
result /= 4294967296;
return result + 0.5;
}
seed(123);
connection.query(createSql);
connection.query("DELETE FROM mysql2_test");
function insertRow(r) {
connection.query("INSERT INTO mysql2_test SET ? ", r);
}
var num_rows = 10000;
var five_words, twenty5_paragraphs;
for (var i = 0; i < num_rows; ++i)
{
five_words = Faker.Lorem.words(1 + rand(4)).join(' ').slice(0, 10);
twenty5_paragraphs = Faker.Lorem.paragraphs(1 + rand(24)).join(' ');
insertRow({
bit_test: 1,
tiny_int_test: rand(128),
small_int_test: rand(32767),
medium_int_test: rand(8388607),
int_test: rand(2147483647),
big_int_test: rand(9223372036854775807),
float_test: rand(32767)/1.87,
float_zero_test: 0.0,
double_test: rand(8388607)/1.87,
decimal_test: rand(8388607)/1.87,
decimal_zero_test: 0,
date_test: '2010-4-4',
date_time_test: '2010-4-4 11:44:00',
timestamp_test: '2010-4-4 11:44:00',
time_test: '11:44:00',
year_test: 14,
char_test: five_words,
varchar_test: five_words,
binary_test: five_words,
varbinary_test: five_words,
tiny_blob_test: five_words,
tiny_text_test: Faker.Lorem.paragraph(rand(5)),
blob_test: twenty5_paragraphs,
text_test: twenty5_paragraphs,
medium_blob_test: twenty5_paragraphs,
medium_text_test: twenty5_paragraphs,
long_blob_test: twenty5_paragraphs,
long_text_test: twenty5_paragraphs,
enum_test: ['val1', 'val2'][rand(2)],
set_test: ['val1', 'val2', 'val1,val2'][rand(3)]
});
}
connection.end();