alasql
Version:
AlaSQL.js - JavaScript SQL database library for relational and graph data manipulation with support of localStorage, IndexedDB, and Excel
109 lines (87 loc) • 2.81 kB
JavaScript
if(typeof exports === 'object') {
var assert = require("assert");
var alasql = require('..');
} else {
__dirname = '.';
};
describe('Test 143 streamfn', function() {
it("1. Create database", function(done){
alasql('CREATE DATABASE test143; use test143');
done();
});
it("3. INNER JOIN on stream", function(done){
test143(true);
alasql.databases[alasql.useid].dbversion++
test143(false);
alasql.databases[alasql.useid].dbversion++
// test143(true);
// test143(false);
// test143(true);
//console.log(res.length);
done();
});
it("99. Drop database", function(done){
alasql('DROP DATABASE test143');
done();
});
});
function test143(dontcache) {
var nc1=0,nc2 = 0, nc3 = 0;
var myfn = function(i) {
nc1++;
if(i>=100) return;
return {a:i, b:i+2};
};
myfn.dontcache = dontcache;
var myfn2 = function(i) {
nc2++;
if(i>=100) return;
for(var k=0;k<10;k++) {
Math.random();
}
return {a:(i%25)+1, c:(i+1)*10};
};
myfn2.dontcache = dontcache;
// myfn3.dontcache = true;
var tm = Date.now();
//if(true) {
var res = alasql('select q.a, q.b, t.a as ta, t.c from ? q INNER join ? t using a',[myfn,myfn2]);
nc3 += res.length;
//console.table(res);
// console.log('INNER',res.length);
//if(false) {
var res = alasql('select q.a, q.b, t.a as ta, t.c from ? q SEMI join ? t using a',[myfn,myfn2]);
nc3 += res.length;
//console.table(res);
//console.log('SEMI', res.length);
//}
var res = alasql('select q.a, q.b, t.a as ta, t.c from ? q ANTI join ? t using a',[myfn,myfn2]);
nc3 += res.length;
//console.table(res);
//console.log('ANTI', res.length);
//if(true) {
var res = alasql('select q.a, q.b, t.a as ta, t.c from ? q LEFT join ? t using a',[myfn,myfn2]);
nc3 += res.length;
//console.table(res);
//console.log('LEFT',res.length);
// assert(res.length == 13013);
var res = alasql('select q.a, q.b, t.a as ta, t.c from ? q RIGHT join ? t using a',[myfn,myfn2]);
nc3 += res.length;
//console.table(res);
//console.log('RIGHT',res.length);
//assert(res.length == 13039);
var res = alasql('select q.a, q.b, t.a as ta, t.c from ? q OUTER join ? t using a',[myfn,myfn2]);
nc3 += res.length;
//console.table(res);
//console.log('OUTER',res.length);
// assert(res.length == 13039);
//}
//}
// var res = alasql('select q.a, q.b, t.c from ? q OUTER join ? t using a '+
// 'EXCEPT select q.a, q.b, t.c from ? q LEFT join ? t using a',[myfn,myfn2,myfn,myfn2]);
// console.log(res);
// console.log(res);
tm = Date.now() - tm;
// console.log(tm);
// console.log(dontcache, nc1,nc2, nc3, tm/nc2);
}