alasql 0.0.50 → 0.0.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.bower.json +44 -3
- package/CHANGELOG.md +9 -0
- package/README.md +13 -4
- package/RELEASES.md +4 -2
- package/alasql.js +772 -598
- package/console/alasql.js +8 -8
- package/console/alasql.min.js +9 -9
- package/dist/alasql-worker.js +1 -1
- package/dist/alasql.js +772 -598
- package/dist/alasql.js.map +1 -1
- package/dist/alasql.min.js +9 -9
- package/examples/country/city.js +16 -0
- package/examples/nodesample.js +16 -0
- package/examples/other/test.js +20 -0
- package/examples/param.js +4 -0
- package/examples/promise.js +10 -0
- package/examples/simple/ex102.js +10 -0
- package/examples/simple/jquery.js +6 -0
- package/examples/sqlite/test.js +5 -0
- package/gulpfile.js +386 -0
- package/package.json +1 -1
- package/src/05copyright.js +1 -1
- package/src/10start.js +1 -1
- package/src/15utility.js +3 -3
- package/src/17alasql.js +6 -0
- package/src/38query.js +56 -9
- package/src/39dojoin.js +4 -1
- package/src/40select.js +55 -17
- package/src/420from.js +17 -4
- package/src/421join.js +14 -4
- package/src/423groupby.js +5 -3
- package/src/424select.js +36 -5
- package/src/55functions.js +12 -0
- package/src/70insert.js +1 -1
- package/src/72delete.js +206 -0
- package/src/84from.js +1 -0
- package/src/alasqlparser.jison +27 -7
- package/src/alasqlparser.js +560 -549
- package/test/callback/cb1.js +59 -0
- package/test/callback/cb2.js +45 -0
- package/test/future/test119.js +77 -0
- package/test/future/test123.js +91 -0
- package/test/future/test131.js +30 -0
- package/test/future/test132.js +69 -0
- package/test/future/test134.js +51 -0
- package/test/future/test135.js +28 -0
- package/test/future/test136.js +23 -0
- package/test/future/test147.js +27 -0
- package/test/graph/CREATE CLASS G1 +39 -0
- package/test/graph/README.md +3 -0
- package/test/graph/SEARCH.md +110 -0
- package/test/graph/idea.txt +22 -0
- package/test/graph/ides 150428.txt +24 -0
- package/test/graph/index.html +68 -0
- package/test/graph/miserables.json +337 -0
- package/test/index.html +10 -1
- package/test/minisql/minisql.js +377 -0
- package/test/test018.js +0 -3
- package/test/test132.js +18 -1
- package/test/test193.js +1 -1
- package/test/test240.js +132 -0
- package/test/test245.js +100 -0
- package/test/test247.js +84 -0
- package/test/test266.js +117 -0
- package/test/test267.js +79 -0
- package/test/test268.js +92 -0
- package/test/test269.js +123 -0
- package/test/test270.js +299 -0
- package/test/test271.js +22 -0
- package/test/test272.js +66 -0
- package/test/test273.js +69 -0
- package/test/test274.js +31 -0
package/test/test247.js
CHANGED
|
@@ -1,3 +1,86 @@
|
|
|
1
|
+
<<<<<<< HEAD
|
|
2
|
+
if(typeof exports === 'object') {
|
|
3
|
+
var assert = require("assert");
|
|
4
|
+
var alasql = require('..');
|
|
5
|
+
} else {
|
|
6
|
+
__dirname = '.';
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
describe('Test 247 UNARY PLUS', function() {
|
|
11
|
+
|
|
12
|
+
it('1. Simple tests',function(done){
|
|
13
|
+
var res = alasql('SELECT VALUE + -1');
|
|
14
|
+
assert(res,-1);
|
|
15
|
+
var res = alasql('SELECT VALUE 70 * +1');
|
|
16
|
+
assert(res,70);
|
|
17
|
+
|
|
18
|
+
var data = [{col0:10, col1:1, col2:100},{col0:20, col1:2, col2:200}];
|
|
19
|
+
var res = alasql('SELECT COLUMN + col1 + 4 FROM ?',[data]);
|
|
20
|
+
assert.deepEqual(res, [5,6]);
|
|
21
|
+
|
|
22
|
+
var res = alasql('SELECT COLUMN - col1 + 4 FROM ?',[data]);
|
|
23
|
+
assert.deepEqual(res, [3,2]);
|
|
24
|
+
|
|
25
|
+
var res = alasql('SELECT COLUMN col1 - + - col0 FROM ?',[data]);
|
|
26
|
+
assert.deepEqual(res, [11,22]);
|
|
27
|
+
|
|
28
|
+
var res = alasql('SELECT COLUMN col1 * + col2 FROM ?',[data]);
|
|
29
|
+
assert.deepEqual(res, [100,400]);
|
|
30
|
+
|
|
31
|
+
var res = alasql('SELECT COLUMN DISTINCT + col1 * + 5 FROM ?',[data]);
|
|
32
|
+
assert.deepEqual(res, [5,10]);
|
|
33
|
+
|
|
34
|
+
var res = alasql('SELECT VALUE + 36 * + ( + 16 )');
|
|
35
|
+
assert(res, 36*16);
|
|
36
|
+
|
|
37
|
+
done();
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
||||||| merged common ancestors
|
|
43
|
+
if(typeof exports === 'object') {
|
|
44
|
+
var assert = require("assert");
|
|
45
|
+
var alasql = require('..');
|
|
46
|
+
} else {
|
|
47
|
+
__dirname = '.';
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
describe('Test 247 UNARY PLUS', function() {
|
|
52
|
+
|
|
53
|
+
it('1. Simple tests',function(done){
|
|
54
|
+
var res = alasql('SELECT VALUE + -1');
|
|
55
|
+
assert(res,-1);
|
|
56
|
+
var res = alasql('SELECT VALUE 70 * +1');
|
|
57
|
+
assert(res,70);
|
|
58
|
+
|
|
59
|
+
var data = [{col0:10, col1:1, col2:100},{col0:20, col1:2, col2:200}];
|
|
60
|
+
var res = alasql('SELECT COLUMN + col1 + 4 FROM ?',[data]);
|
|
61
|
+
assert.deepEqual(res, [5,6]);
|
|
62
|
+
|
|
63
|
+
var res = alasql('SELECT COLUMN - col1 + 4 FROM ?',[data]);
|
|
64
|
+
assert.deepEqual(res, [3,2]);
|
|
65
|
+
|
|
66
|
+
var res = alasql('SELECT COLUMN col1 - + - col0 FROM ?',[data]);
|
|
67
|
+
assert.deepEqual(res, [11,22]);
|
|
68
|
+
|
|
69
|
+
var res = alasql('SELECT COLUMN col1 * + col2 FROM ?',[data]);
|
|
70
|
+
assert.deepEqual(res, [100,400]);
|
|
71
|
+
|
|
72
|
+
var res = alasql('SELECT COLUMN DISTINCT + col1 * + 5 FROM ?',[data]);
|
|
73
|
+
assert.deepEqual(res, [5,10]);
|
|
74
|
+
|
|
75
|
+
var res = alasql('SELECT VALUE + 36 * + ( + 16 )');
|
|
76
|
+
assert(res, 36*16);
|
|
77
|
+
|
|
78
|
+
done();
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
=======
|
|
1
84
|
if(typeof exports === 'object') {
|
|
2
85
|
var assert = require("assert");
|
|
3
86
|
var alasql = require('..');
|
|
@@ -38,3 +121,4 @@ describe('Test 247 UNARY PLUS', function() {
|
|
|
38
121
|
|
|
39
122
|
});
|
|
40
123
|
|
|
124
|
+
>>>>>>> release/0.0.46
|
package/test/test266.js
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
if(typeof exports === 'object') {
|
|
2
|
+
var assert = require("assert");
|
|
3
|
+
var alasql = require('..');
|
|
4
|
+
} else {
|
|
5
|
+
__dirname = '.';
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
if(typeof exports == 'object') {
|
|
9
|
+
|
|
10
|
+
describe('Test 266 Custom MEDIAN Aggregator', function() {
|
|
11
|
+
|
|
12
|
+
it('1. MEDIAN', function(done) {
|
|
13
|
+
var data = [
|
|
14
|
+
{a:1,b:1},{a:1,b:3},{a:1,b:1},{a:1,b:5},{a:1,b:1},{a:1,b:2},
|
|
15
|
+
{a:2,b:1},{a:2,b:1},{a:2,b:5},{a:2,b:5},{a:2,b:8},
|
|
16
|
+
{a:3,b:1},{a:3,b:1},{a:3,b:5},
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
alasql.aggr.MYMEDIAN = function(v,s,acc){
|
|
20
|
+
// Init
|
|
21
|
+
if(typeof acc.arr == 'undefined') {
|
|
22
|
+
acc.arr = [v];
|
|
23
|
+
return v;
|
|
24
|
+
// Pass
|
|
25
|
+
} else {
|
|
26
|
+
acc.arr.push(v);
|
|
27
|
+
var p = acc.arr.sort();
|
|
28
|
+
return p[(p.length/2|0)];
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
alasql.aggr.MYCOUNT = function(v,s,acc){
|
|
33
|
+
if(typeof acc.cnt == 'undefined') {
|
|
34
|
+
acc.cnt = 1;
|
|
35
|
+
} else {
|
|
36
|
+
acc.cnt++;
|
|
37
|
+
}
|
|
38
|
+
return acc.cnt;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
alasql.aggr.MYSUM = function(v,s,acc){
|
|
42
|
+
if(typeof acc.sum == 'undefined') {
|
|
43
|
+
acc.sum = v;
|
|
44
|
+
} else {
|
|
45
|
+
acc.sum += v;
|
|
46
|
+
}
|
|
47
|
+
return acc.sum;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
alasql.aggr.MYFIRST = function(v,s,acc){
|
|
51
|
+
if(typeof acc.val == 'undefined') {
|
|
52
|
+
acc.val = v;
|
|
53
|
+
};
|
|
54
|
+
return acc.val;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
alasql.aggr.MYLAST = function(v,s,acc){
|
|
58
|
+
return v;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
alasql.aggr.MYMIN = function(v,s,acc){
|
|
62
|
+
if(typeof acc.min == 'undefined') {
|
|
63
|
+
acc.min = v;
|
|
64
|
+
} else {
|
|
65
|
+
acc.min = Math.min(acc.min,v);
|
|
66
|
+
}
|
|
67
|
+
return acc.min;
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
alasql.aggr.MYMAX = function(v,s,acc){
|
|
71
|
+
if(typeof acc.max == 'undefined') {
|
|
72
|
+
acc.max = v;
|
|
73
|
+
} else {
|
|
74
|
+
acc.max = Math.max(acc.max,v);
|
|
75
|
+
}
|
|
76
|
+
return acc.max;
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
var res = alasql('SELECT a,MYMEDIAN(b),MYCOUNT(b),MYSUM(b),\
|
|
80
|
+
MYMIN(b),MYMAX(b),MYFIRST(b),MYLAST(b) FROM ? GROUP BY a',[data]);
|
|
81
|
+
|
|
82
|
+
assert.deepEqual(res,
|
|
83
|
+
[ { a: 1,
|
|
84
|
+
'MYMEDIAN(b)': 2,
|
|
85
|
+
'MYCOUNT(b)': 6,
|
|
86
|
+
'MYSUM(b)': 13,
|
|
87
|
+
'MYMIN(b)': 1,
|
|
88
|
+
'MYMAX(b)': 5,
|
|
89
|
+
'MYFIRST(b)': 1,
|
|
90
|
+
'MYLAST(b)': 2 },
|
|
91
|
+
{ a: 2,
|
|
92
|
+
'MYMEDIAN(b)': 5,
|
|
93
|
+
'MYCOUNT(b)': 5,
|
|
94
|
+
'MYSUM(b)': 20,
|
|
95
|
+
'MYMIN(b)': 1,
|
|
96
|
+
'MYMAX(b)': 8,
|
|
97
|
+
'MYFIRST(b)': 1,
|
|
98
|
+
'MYLAST(b)': 8 },
|
|
99
|
+
{ a: 3,
|
|
100
|
+
'MYMEDIAN(b)': 1,
|
|
101
|
+
'MYCOUNT(b)': 3,
|
|
102
|
+
'MYSUM(b)': 7,
|
|
103
|
+
'MYMIN(b)': 1,
|
|
104
|
+
'MYMAX(b)': 5,
|
|
105
|
+
'MYFIRST(b)': 1,
|
|
106
|
+
'MYLAST(b)': 5 } ]
|
|
107
|
+
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
done();
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
}
|
|
117
|
+
|
package/test/test267.js
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
if(typeof exports === 'object') {
|
|
2
|
+
var assert = require("assert");
|
|
3
|
+
var alasql = require('..');
|
|
4
|
+
} else {
|
|
5
|
+
__dirname = '.';
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
if(typeof exports == 'object') {
|
|
9
|
+
var DOMStorage = require("dom-storage")
|
|
10
|
+
global.localStorage = new DOMStorage("./restest267.json", { strict: false, ws: '' });
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
describe('Test 267 LocalStorage test', function() {
|
|
16
|
+
|
|
17
|
+
it('1. First pass', function(done) {
|
|
18
|
+
|
|
19
|
+
var data = [{name:'first'}];
|
|
20
|
+
alasql('CREATE localStorage DATABASE IF NOT EXISTS db');
|
|
21
|
+
alasql('ATTACH localStorage DATABASE db');
|
|
22
|
+
alasql('USE db');
|
|
23
|
+
alasql('CREATE TABLE IF NOT EXISTS test');
|
|
24
|
+
alasql('SELECT * INTO test FROM ?',[data])
|
|
25
|
+
var res = alasql('SELECT * FROM test');
|
|
26
|
+
console.log(res);
|
|
27
|
+
done();
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it('2. Second pass', function(done) {
|
|
31
|
+
var data = [{name:'second'}];
|
|
32
|
+
alasql('CREATE localStorage DATABASE IF NOT EXISTS db');
|
|
33
|
+
alasql('ATTACH localStorage DATABASE db');
|
|
34
|
+
alasql('USE db');
|
|
35
|
+
alasql('CREATE TABLE IF NOT EXISTS test')
|
|
36
|
+
alasql('SELECT * INTO test FROM ?',[data])
|
|
37
|
+
var res = alasql('SELECT * FROM test');
|
|
38
|
+
console.log(res);
|
|
39
|
+
done();
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it('3. Detach', function(done) {
|
|
43
|
+
alasql('DETACH DATABASE db');
|
|
44
|
+
done();
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
it('4. Third pass', function(done) {
|
|
48
|
+
var data = [{name:'third'}];
|
|
49
|
+
alasql('CREATE localStorage DATABASE IF NOT EXISTS db');
|
|
50
|
+
alasql('ATTACH localStorage DATABASE db');
|
|
51
|
+
alasql('USE db');
|
|
52
|
+
alasql('CREATE TABLE IF NOT EXISTS test')
|
|
53
|
+
alasql('SELECT * INTO test FROM ?',[data])
|
|
54
|
+
var res = alasql('SELECT * FROM test');
|
|
55
|
+
console.log(res);
|
|
56
|
+
done();
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
it('5. Fifth pass', function(done) {
|
|
60
|
+
var data = [{name:'fifth'}];
|
|
61
|
+
alasql('CREATE localStorage DATABASE IF NOT EXISTS db');
|
|
62
|
+
alasql('ATTACH localStorage DATABASE db');
|
|
63
|
+
alasql('USE db');
|
|
64
|
+
alasql('CREATE TABLE IF NOT EXISTS test')
|
|
65
|
+
alasql('SELECT * INTO test FROM ?',[data])
|
|
66
|
+
var res = alasql('SELECT * FROM test');
|
|
67
|
+
console.log(res);
|
|
68
|
+
done();
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
it('3. Drop phase', function(done) {
|
|
72
|
+
alasql('DETACH DATABASE db');
|
|
73
|
+
alasql('DROP LOCALSTORAGE DATABASE db');
|
|
74
|
+
done();
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
|
package/test/test268.js
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
if(typeof exports === 'object') {
|
|
2
|
+
var assert = require("assert");
|
|
3
|
+
var alasql = require('..');
|
|
4
|
+
} else {
|
|
5
|
+
__dirname = '.';
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
if(typeof exports == 'object') {
|
|
9
|
+
var DOMStorage = require("dom-storage")
|
|
10
|
+
global.localStorage = new DOMStorage("./restest267.json", { strict: false, ws: '' });
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
describe('Test 268 INNER JOIN stress test', function() {
|
|
16
|
+
|
|
17
|
+
it('1. Create database', function(done) {
|
|
18
|
+
alasql('CREATE DATABASE test268; USE test268');
|
|
19
|
+
done();
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
var data1 = [{a:1,b:10},{a:2,b:20}];
|
|
23
|
+
var data2 = [{b:10,c:100},{b:20,c:200}];
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
it('2. INNER JOIN on Array', function(done) {
|
|
27
|
+
var res = alasql('SELECT t1.*,t2.* FROM ? t1 INNER JOIN ? t2 USING b',[data1,data2]);
|
|
28
|
+
assert.deepEqual(res,
|
|
29
|
+
[ { a: 1, b: 10, c: 100 }, { a: 2, b: 20, c: 200 } ]
|
|
30
|
+
);
|
|
31
|
+
done();
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
it('3. INNER JOIN on Tables', function(done) {
|
|
35
|
+
alasql('CREATE TABLE table1(a INT, b INT);');
|
|
36
|
+
alasql('SELECT * INTO table1 FROM ?', [data1]);
|
|
37
|
+
alasql('CREATE TABLE table2(b INT, c INT);');
|
|
38
|
+
alasql('INSERT INTO table2 SELECT * FROM ?',[data2]);
|
|
39
|
+
var res = alasql('SELECT t1.*,t2.* FROM table1 t1 INNER JOIN table2 t2 USING b',[data1,data2]);
|
|
40
|
+
assert.deepEqual(res,
|
|
41
|
+
[ { a: 1, b: 10, c: 100 }, { a: 2, b: 20, c: 200 } ]
|
|
42
|
+
);
|
|
43
|
+
done();
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
var t1 = [];
|
|
47
|
+
for(var i=0;i<50000;i++) {
|
|
48
|
+
t1.push({a:i,b:i,bb:i});
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
var t1000 = 100;
|
|
52
|
+
var t50000 = 200;
|
|
53
|
+
var t2 = [];
|
|
54
|
+
for(var i=1;i<t50000;i++) {
|
|
55
|
+
t2.push({b:i,bb:i%2,c:i*100});
|
|
56
|
+
}
|
|
57
|
+
/*
|
|
58
|
+
for(var i=1;i<t50000;i++) {
|
|
59
|
+
t2.push({b:(i*2)%t1000,bb:i%3,c:i*100});
|
|
60
|
+
}
|
|
61
|
+
for(var i=1;i<t50000;i++) {
|
|
62
|
+
t2.push({b:(i*i*i)%t1000,bb:i%4,c:i*100});
|
|
63
|
+
}
|
|
64
|
+
*/
|
|
65
|
+
//console.log(t2);
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
it('4. INNER JOIN on Big Array', function(done) {
|
|
69
|
+
|
|
70
|
+
var res = alasql('SELECT t1.*,t2.* FROM ? t1 INNER JOIN ? t2 ON t1.b = t2.b',[t1,t2]);
|
|
71
|
+
console.log('INNER =',res.length);
|
|
72
|
+
var res = alasql('SELECT t1.*,t2.* FROM ? t1 LEFT JOIN ? t2 ON t1.b = t2.b',[t1,t2]);
|
|
73
|
+
console.log('LEFT =',res.length);
|
|
74
|
+
var res = alasql('SELECT t1.*,t2.* FROM ? t1 RIGHT JOIN ? t2 ON t1.b = t2.b',[t1,t2]);
|
|
75
|
+
console.log('RIGHT =',res.length);
|
|
76
|
+
var res = alasql('SELECT t1.*,t2.* FROM ? t1 OUTER JOIN ? t2 ON t1.b = t2.b',[t1,t2]);
|
|
77
|
+
console.log('OUTER =',res.length);
|
|
78
|
+
// assert.deepEqual(res.,
|
|
79
|
+
// [ { a: 1, b: 10, c: 100 }, { a: 2, b: 20, c: 200 } ]
|
|
80
|
+
// );
|
|
81
|
+
done();
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
it('99. Drop phase', function(done) {
|
|
86
|
+
alasql('DROP DATABASE test268');
|
|
87
|
+
done();
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
|
package/test/test269.js
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
if(typeof exports === 'object') {
|
|
2
|
+
var assert = require("assert");
|
|
3
|
+
var alasql = require('..');
|
|
4
|
+
} else {
|
|
5
|
+
__dirname = '.';
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
if(typeof exports == 'object') {
|
|
9
|
+
var DOMStorage = require("dom-storage")
|
|
10
|
+
global.localStorage = new DOMStorage("./restest267.json", { strict: false, ws: '' });
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
describe('Test 269 options', function() {
|
|
16
|
+
|
|
17
|
+
var data1 = [{a:1,b:10},{a:2,b:20},{a:3,b:30}];
|
|
18
|
+
var data2 = [{b:10,c:100},{b:20,c:200},{b:40,c:400},];
|
|
19
|
+
|
|
20
|
+
it('1. Create database', function(done) {
|
|
21
|
+
alasql('CREATE DATABASE test269; USE test269');
|
|
22
|
+
done();
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('2. by default', function(done) {
|
|
26
|
+
alasql.options.modifier = undefined;
|
|
27
|
+
var res = alasql('SELECT t1.*,t2.* FROM ? t1 OUTER JOIN ? t2 USING b',[data1,data2]);
|
|
28
|
+
assert.deepEqual(res,
|
|
29
|
+
[ { a: 1, b: 10, c: 100 },
|
|
30
|
+
{ a: 2, b: 20, c: 200 },
|
|
31
|
+
{ a: 3, b: 30 },
|
|
32
|
+
{ b: 40, c: 400 } ]);
|
|
33
|
+
|
|
34
|
+
done();
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
it('3. VALUE', function(done) {
|
|
38
|
+
alasql.options.modifier = 'VALUE';
|
|
39
|
+
var res = alasql('SELECT t1.*,t2.* FROM ? t1 OUTER JOIN ? t2 USING b',[data1,data2]);
|
|
40
|
+
assert.deepEqual(res,1);
|
|
41
|
+
|
|
42
|
+
done();
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it('4. ROW', function(done) {
|
|
46
|
+
alasql.options.modifier = 'ROW';
|
|
47
|
+
var res = alasql('SELECT t1.*,t2.* FROM ? t1 OUTER JOIN ? t2 USING b',[data1,data2]);
|
|
48
|
+
assert.deepEqual(res,[1,10,100]);
|
|
49
|
+
|
|
50
|
+
done();
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
it('5. COLUMN', function(done) {
|
|
54
|
+
alasql.options.modifier = 'COLUMN';
|
|
55
|
+
var res = alasql('SELECT t1.*,t2.* FROM ? t1 OUTER JOIN ? t2 USING b',[data1,data2]);
|
|
56
|
+
assert.deepEqual(res,[1,2,3,undefined]);
|
|
57
|
+
|
|
58
|
+
done();
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
it('6. MATRIX', function(done) {
|
|
63
|
+
alasql.options.modifier = 'MATRIX';
|
|
64
|
+
var res = alasql('SELECT t1.*,t2.* FROM ? t1 OUTER JOIN ? t2 USING b',[data1,data2]);
|
|
65
|
+
//console.log(res);
|
|
66
|
+
// Wrong with reduced rows
|
|
67
|
+
assert.deepEqual(res,[[1,10,100],[2,20,200],[3,30,undefined],[undefined,40,400]]);
|
|
68
|
+
|
|
69
|
+
done();
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
it('6a. MATRIX', function(done) {
|
|
73
|
+
alasql.options.modifier = 'MATRIX';
|
|
74
|
+
var res = alasql('SELECT t1.*,t2.* FROM ? t1 OUTER JOIN ? t2 USING b \
|
|
75
|
+
ORDER BY a',[data1,data2]);
|
|
76
|
+
//console.log(res);
|
|
77
|
+
// Wrong with reduced rows
|
|
78
|
+
assert.deepEqual(res,[[undefined,40,400],[1,10,100],[2,20,200],[3,30,undefined]]);
|
|
79
|
+
|
|
80
|
+
done();
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
it('7. RECORDSET', function(done) {
|
|
85
|
+
alasql.options.modifier = "RECORDSET";
|
|
86
|
+
var res = alasql('SELECT t1.*,t2.* FROM ? t1 OUTER JOIN ? t2 USING b',[data1,data2]);
|
|
87
|
+
//console.log(res);
|
|
88
|
+
// Wrong with reduced rows
|
|
89
|
+
assert.deepEqual(res, {data:
|
|
90
|
+
[ { a: 1, b: 10, c: 100 },
|
|
91
|
+
{ a: 2, b: 20, c: 200 },
|
|
92
|
+
{ a: 3, b: 30 },
|
|
93
|
+
{ b: 40, c: 400 } ],
|
|
94
|
+
columns: [{columnid:'a'},{columnid:'b'},{columnid:'c'}]}
|
|
95
|
+
);
|
|
96
|
+
done();
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
it('8. INDEX', function(done) {
|
|
100
|
+
alasql.options.modifier = 'INDEX';
|
|
101
|
+
var res = alasql('SELECT t1.*,t2.* FROM ? t1 OUTER JOIN ? t2 USING b',[data1,data2]);
|
|
102
|
+
assert.deepEqual(res,{ '1': 10, '2': 20, '3': 30, undefined: 40 });
|
|
103
|
+
|
|
104
|
+
done();
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
it('9. TEXTSTRING', function(done) {
|
|
108
|
+
alasql.options.modifier = 'TEXTSTRING';
|
|
109
|
+
var res = alasql('SELECT t1.*,t2.* FROM ? t1 OUTER JOIN ? t2 USING b',[data1,data2]);
|
|
110
|
+
assert.deepEqual(res,'1\n2\n3\n');
|
|
111
|
+
|
|
112
|
+
done();
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
it('99. Drop phase', function(done) {
|
|
116
|
+
delete alasql.options.modifier;
|
|
117
|
+
alasql('DROP DATABASE test269');
|
|
118
|
+
done();
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
|