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.
Files changed (72) hide show
  1. package/.bower.json +44 -3
  2. package/CHANGELOG.md +9 -0
  3. package/README.md +13 -4
  4. package/RELEASES.md +4 -2
  5. package/alasql.js +772 -598
  6. package/console/alasql.js +8 -8
  7. package/console/alasql.min.js +9 -9
  8. package/dist/alasql-worker.js +1 -1
  9. package/dist/alasql.js +772 -598
  10. package/dist/alasql.js.map +1 -1
  11. package/dist/alasql.min.js +9 -9
  12. package/examples/country/city.js +16 -0
  13. package/examples/nodesample.js +16 -0
  14. package/examples/other/test.js +20 -0
  15. package/examples/param.js +4 -0
  16. package/examples/promise.js +10 -0
  17. package/examples/simple/ex102.js +10 -0
  18. package/examples/simple/jquery.js +6 -0
  19. package/examples/sqlite/test.js +5 -0
  20. package/gulpfile.js +386 -0
  21. package/package.json +1 -1
  22. package/src/05copyright.js +1 -1
  23. package/src/10start.js +1 -1
  24. package/src/15utility.js +3 -3
  25. package/src/17alasql.js +6 -0
  26. package/src/38query.js +56 -9
  27. package/src/39dojoin.js +4 -1
  28. package/src/40select.js +55 -17
  29. package/src/420from.js +17 -4
  30. package/src/421join.js +14 -4
  31. package/src/423groupby.js +5 -3
  32. package/src/424select.js +36 -5
  33. package/src/55functions.js +12 -0
  34. package/src/70insert.js +1 -1
  35. package/src/72delete.js +206 -0
  36. package/src/84from.js +1 -0
  37. package/src/alasqlparser.jison +27 -7
  38. package/src/alasqlparser.js +560 -549
  39. package/test/callback/cb1.js +59 -0
  40. package/test/callback/cb2.js +45 -0
  41. package/test/future/test119.js +77 -0
  42. package/test/future/test123.js +91 -0
  43. package/test/future/test131.js +30 -0
  44. package/test/future/test132.js +69 -0
  45. package/test/future/test134.js +51 -0
  46. package/test/future/test135.js +28 -0
  47. package/test/future/test136.js +23 -0
  48. package/test/future/test147.js +27 -0
  49. package/test/graph/CREATE CLASS G1 +39 -0
  50. package/test/graph/README.md +3 -0
  51. package/test/graph/SEARCH.md +110 -0
  52. package/test/graph/idea.txt +22 -0
  53. package/test/graph/ides 150428.txt +24 -0
  54. package/test/graph/index.html +68 -0
  55. package/test/graph/miserables.json +337 -0
  56. package/test/index.html +10 -1
  57. package/test/minisql/minisql.js +377 -0
  58. package/test/test018.js +0 -3
  59. package/test/test132.js +18 -1
  60. package/test/test193.js +1 -1
  61. package/test/test240.js +132 -0
  62. package/test/test245.js +100 -0
  63. package/test/test247.js +84 -0
  64. package/test/test266.js +117 -0
  65. package/test/test267.js +79 -0
  66. package/test/test268.js +92 -0
  67. package/test/test269.js +123 -0
  68. package/test/test270.js +299 -0
  69. package/test/test271.js +22 -0
  70. package/test/test272.js +66 -0
  71. package/test/test273.js +69 -0
  72. package/test/test274.js +31 -0
@@ -0,0 +1,299 @@
1
+ if(typeof exports === 'object') {
2
+ var assert = require("assert");
3
+ var alasql = require('..');
4
+ var _ = require('lodash');
5
+ } else {
6
+ __dirname = '.';
7
+ };
8
+
9
+ if(typeof exports == 'object') {
10
+ var DOMStorage = require("dom-storage")
11
+ global.localStorage = new DOMStorage("./restest267.json", { strict: false, ws: '' });
12
+ };
13
+
14
+
15
+ describe('Test 270 RECORDSET tests', function() {
16
+
17
+ var emptydata = [];
18
+ var data1 = [{a:1,b:10},{a:2,b:20},{a:3,b:30}];
19
+ var data2 = [{b:10,c:100},{b:20,c:200},{b:40,c:400}];
20
+
21
+ it('1. Create database', function(done) {
22
+ alasql('CREATE DATABASE test270; USE test270');
23
+ alasql('CREATE TABLE one(a INT, b INT)');
24
+ alasql('CREATE TABLE two(b INT, c INT)');
25
+ alasql('CREATE TABLE three');
26
+ alasql('CREATE TABLE four');
27
+ alasql.options.modifier = 'RECORDSET';
28
+ done();
29
+ });
30
+
31
+ it('2. Empty test on param throws error', function(done) {
32
+ assert.throws(function(){
33
+ var res = alasql('SELECT * FROM ?',[]);
34
+ },Error);
35
+ done();
36
+ });
37
+
38
+ it('3. Empty test on param throws error', function(done) {
39
+ var res = alasql('SELECT * FROM ?',[emptydata]);
40
+ assert.deepEqual(res,{data:[],columns:[]});
41
+ done();
42
+ });
43
+
44
+ it('4. Empty test on table with columns', function(done) {
45
+ var res = alasql('SELECT * FROM one');
46
+ var colres = _.pluck(res.columns,'columnid');
47
+ assert.deepEqual(colres, ["a","b"]);
48
+ done();
49
+ });
50
+
51
+ it('5. Test on empty table without column definitions', function(done) {
52
+ var res = alasql('SELECT * FROM three');
53
+ var colres = _.pluck(res.columns,'columnid');
54
+ assert.deepEqual(colres,[]);
55
+ done();
56
+ });
57
+
58
+ it('6. Test on empty table without column definitions', function(done) {
59
+ alasql('SELECT * INTO three FROM ?',[data1])
60
+ var res = alasql('SELECT * FROM three');
61
+ var colres = _.pluck(res.columns,'columnid');
62
+ assert.deepEqual(colres,['a','b']);
63
+ done();
64
+ });
65
+
66
+ it('7. Test on empty table without column definitions', function(done) {
67
+ var res = alasql('SELECT a,b FROM three');
68
+ var colres = _.pluck(res.columns,'columnid');
69
+ assert.deepEqual(colres,['a','b']);
70
+ done();
71
+ });
72
+
73
+ it('8. Test on empty table without column definitions', function(done) {
74
+ var res = alasql('SELECT b,a FROM three');
75
+ var colres = _.pluck(res.columns,'columnid');
76
+ assert.deepEqual(colres,['b','a']);
77
+ done();
78
+ });
79
+
80
+ it('9. Test on empty table without column definitions', function(done) {
81
+ var res = alasql('SELECT a,b,a*a AS a2 FROM three');
82
+ var colres = _.pluck(res.columns,'columnid');
83
+ assert.deepEqual(colres,['a','b','a2']);
84
+ done();
85
+ });
86
+
87
+ it('9a. Test on table without column definitions', function(done) {
88
+ var res = alasql('SELECT a,a*a AS a2,b FROM three');
89
+ var colres = _.pluck(res.columns,'columnid');
90
+ assert.deepEqual(colres,['a','a2','b']);
91
+ done();
92
+ });
93
+
94
+ it('9b. Test on table without column definitions', function(done) {
95
+ var res = alasql('SELECT a,* FROM three');
96
+ var colres = _.pluck(res.columns,'columnid');
97
+ assert.deepEqual(colres,['a','b']);
98
+ done();
99
+ });
100
+
101
+ it('9c. Test on table without column definitions', function(done) {
102
+ var res = alasql('SELECT *,a FROM three');
103
+ var colres = _.pluck(res.columns,'columnid');
104
+ assert.deepEqual(colres,['a','b']);
105
+ done();
106
+ });
107
+
108
+ it('9c1. Test on table without column definitions', function(done) {
109
+ var res = alasql('SELECT b,*,a FROM three');
110
+ var colres = _.pluck(res.columns,'columnid');
111
+ assert.deepEqual(colres,['b','a']);
112
+ done();
113
+ });
114
+
115
+ it('9d. Test on table without column definitions', function(done) {
116
+ var res = alasql('SELECT a,*,a*a AS a2 FROM three');
117
+ var colres = _.pluck(res.columns,'columnid');
118
+ assert.deepEqual(colres,['a','a','b','a2']);
119
+ done();
120
+ });
121
+
122
+ it('10. Array on param with *', function(done) {
123
+ var res = alasql('SELECT * FROM ?',[data1]);
124
+ var colres = _.pluck(res.columns,'columnid');
125
+ assert.deepEqual(colres,['a','b']);
126
+ done();
127
+ });
128
+
129
+ it('11. Array with column', function(done) {
130
+ var res = alasql('SELECT a,b FROM ?',[data1]);
131
+ var colres = _.pluck(res.columns,'columnid');
132
+ assert.deepEqual(colres,['a','b']);
133
+ done();
134
+ });
135
+
136
+ it('11a. Array with column', function(done) {
137
+ var res = alasql('SELECT b,a FROM ?',[data1]);
138
+ var colres = _.pluck(res.columns,'columnid');
139
+ assert.deepEqual(colres,['b','a']);
140
+ done();
141
+ });
142
+
143
+ it('11b. Array with column', function(done) {
144
+ var res = alasql('SELECT *,b,a FROM ?',[data1]);
145
+ var colres = _.pluck(res.columns,'columnid');
146
+ assert.deepEqual(colres,['a','b','b','a']);
147
+ done();
148
+ });
149
+
150
+ it('12. Array with column', function(done) {
151
+ var res = alasql('SELECT a,a*a AS a2 FROM ?',[data1]);
152
+ var colres = _.pluck(res.columns,'columnid');
153
+ assert.deepEqual(colres, ["a","a2"]);
154
+ done();
155
+ });
156
+
157
+ it('12a. Array with column', function(done) {
158
+ var res = alasql('SELECT a,a*a AS a2,b FROM ?',[data1]);
159
+ var colres = _.pluck(res.columns,'columnid');
160
+ assert.deepEqual(colres, ["a","a2",'b']);
161
+ done();
162
+ });
163
+
164
+
165
+ it('13. Array with column from table', function(done) {
166
+ var res = alasql('SELECT a,a*a AS a2 FROM one');
167
+ var colres = _.pluck(res.columns,'columnid');
168
+ assert.deepEqual(colres, ["a","a2"]);
169
+ done();
170
+ });
171
+
172
+ it('14. Array with column in reversed order', function(done) {
173
+ var res = alasql('SELECT a*a AS a2,a FROM ?',[data1]);
174
+ var colres = _.pluck(res.columns,'columnid');
175
+ assert.deepEqual(colres, ["a2","a"]);
176
+ done();
177
+ });
178
+
179
+ it('15. Array with column in reversed order', function(done) {
180
+ var res = alasql('SELECT a*a AS a2,a FROM ?',[data1]);
181
+ var colres = _.pluck(res.columns,'columnid');
182
+ assert.deepEqual(colres, ["a2","a"]);
183
+ done();
184
+ });
185
+
186
+
187
+ it('16. JOIN params', function(done) {
188
+ var res = alasql('SELECT one.*,two.* FROM ? one JOIN ? two USING b',[data1,data2]);
189
+ var colres = _.pluck(res.columns,'columnid');
190
+ assert.deepEqual(colres, ["a","b","c"]);
191
+ done();
192
+ });
193
+
194
+
195
+ it('17. JOIN tables', function(done) {
196
+ alasql('SELECT * INTO one FROM ?',[data1]);
197
+ alasql('SELECT * INTO two FROM ?',[data2]);
198
+ var res = alasql('SELECT one.*,two.* FROM one JOIN two USING b');
199
+ var colres = _.pluck(res.columns,'columnid');
200
+ assert.deepEqual(colres, ["a","b","b","c"]);
201
+ done();
202
+ });
203
+
204
+ it('18. JOIN params', function(done) {
205
+ var res = alasql('SELECT one.*,two.* FROM ? one JOIN ? two USING b',[data1,data2]);
206
+ var colres = _.pluck(res.columns,'columnid');
207
+ assert.deepEqual(colres, ["a","b","c"]);
208
+ done();
209
+ });
210
+
211
+
212
+ /*
213
+ it('3. VALUE', function(done) {
214
+ alasql.options.modifier = 'VALUE';
215
+ var res = alasql('SELECT t1.*,t2.* FROM ? t1 OUTER JOIN ? t2 USING b',[data1,data2]);
216
+ assert.deepEqual(res,1);
217
+
218
+ done();
219
+ });
220
+
221
+ it('4. ROW', function(done) {
222
+ alasql.options.modifier = 'ROW';
223
+ var res = alasql('SELECT t1.*,t2.* FROM ? t1 OUTER JOIN ? t2 USING b',[data1,data2]);
224
+ assert.deepEqual(res,[1,10,100]);
225
+
226
+ done();
227
+ });
228
+
229
+ it('5. COLUMN', function(done) {
230
+ alasql.options.modifier = 'COLUMN';
231
+ var res = alasql('SELECT t1.*,t2.* FROM ? t1 OUTER JOIN ? t2 USING b',[data1,data2]);
232
+ assert.deepEqual(res,[1,2,3,undefined]);
233
+
234
+ done();
235
+ });
236
+
237
+
238
+ it('6. MATRIX', function(done) {
239
+ alasql.options.modifier = 'MATRIX';
240
+ var res = alasql('SELECT t1.*,t2.* FROM ? t1 OUTER JOIN ? t2 USING b',[data1,data2]);
241
+ //console.log(res);
242
+ // Wrong with reduced rows
243
+ assert.deepEqual(res,[[1,10,100],[2,20,200],[3,30,undefined],[undefined,40,400]]);
244
+
245
+ done();
246
+ });
247
+
248
+ it('6a. MATRIX', function(done) {
249
+ alasql.options.modifier = 'MATRIX';
250
+ var res = alasql('SELECT t1.*,t2.* FROM ? t1 OUTER JOIN ? t2 USING b \
251
+ ORDER BY a',[data1,data2]);
252
+ //console.log(res);
253
+ // Wrong with reduced rows
254
+ assert.deepEqual(res,[[undefined,40,400],[1,10,100],[2,20,200],[3,30,undefined]]);
255
+
256
+ done();
257
+ });
258
+
259
+
260
+ it('7. RECORDSET', function(done) {
261
+ alasql.options.modifier = "RECORDSET";
262
+ var res = alasql('SELECT t1.*,t2.* FROM ? t1 OUTER JOIN ? t2 USING b',[data1,data2]);
263
+ //console.log(res);
264
+ // Wrong with reduced rows
265
+ assert.deepEqual(res, {data:
266
+ [ { a: 1, b: 10, c: 100 },
267
+ { a: 2, b: 20, c: 200 },
268
+ { a: 3, b: 30 },
269
+ { b: 40, c: 400 } ],
270
+ columns: [{columnid:'a'},{columnid:'b'},{columnid:'c'}]}
271
+ );
272
+ done();
273
+ });
274
+
275
+ it('8. INDEX', function(done) {
276
+ alasql.options.modifier = 'INDEX';
277
+ var res = alasql('SELECT t1.*,t2.* FROM ? t1 OUTER JOIN ? t2 USING b',[data1,data2]);
278
+ assert.deepEqual(res,{ '1': 10, '2': 20, '3': 30, undefined: 40 });
279
+
280
+ done();
281
+ });
282
+
283
+ it('9. TEXTSTRING', function(done) {
284
+ alasql.options.modifier = 'TEXTSTRING';
285
+ var res = alasql('SELECT t1.*,t2.* FROM ? t1 OUTER JOIN ? t2 USING b',[data1,data2]);
286
+ assert.deepEqual(res,'1\n2\n3\n');
287
+
288
+ done();
289
+ });
290
+ */
291
+ it('99. Drop phase', function(done) {
292
+ delete alasql.options.modifier;
293
+ alasql('DROP DATABASE test270');
294
+ done();
295
+ });
296
+
297
+ });
298
+
299
+
@@ -0,0 +1,22 @@
1
+ if(typeof exports === 'object') {
2
+ var assert = require("assert");
3
+ var alasql = require('..');
4
+ var _ = require('lodash');
5
+ } else {
6
+ __dirname = '.';
7
+ };
8
+
9
+
10
+ describe('Test 271 RECORDSET and Excel tests', function() {
11
+
12
+ it('1. Open Excel and columns', function(done) {
13
+ var res = alasql('SELECT RECORDSET * FROM XLSX("test168.xlsx",{headers:true})',[],function(res){
14
+ var colres = _.pluck(res.columns,"columnid");
15
+ assert.deepEqual(colres,["City","Population"]);
16
+ done();
17
+ });
18
+ });
19
+
20
+ });
21
+
22
+
@@ -0,0 +1,66 @@
1
+ if(typeof exports === 'object') {
2
+ var assert = require("assert");
3
+ var alasql = require('..');
4
+ var _ = require('lodash');
5
+ } else {
6
+ __dirname = '.';
7
+ };
8
+
9
+
10
+ describe('Test 272 REMOVE columns', function() {
11
+
12
+ it('0. Create database', function(done) {
13
+ alasql('CREATE DATABASE test272;USE test272');
14
+ done();
15
+ });
16
+
17
+
18
+ it('1. Remove columns', function(done) {
19
+ var data = [{a:1,b:10,c:100},{a:2,b:20,c:200},];
20
+ var res = alasql('SELECT RECORDSET * REMOVE COLUMN c FROM ?',[data]);
21
+ var colres = _.pluck(res.columns,"columnid");
22
+ assert.deepEqual(colres,["a","b"]);
23
+ done();
24
+ });
25
+
26
+ it('2. Remove columns', function(done) {
27
+ var data = [{a:1,b:10,c:100},{a:2,b:20,c:200},];
28
+ var res = alasql('SELECT RECORDSET * REMOVE COLUMNS c FROM ?',[data]);
29
+ var colres = _.pluck(res.columns,"columnid");
30
+ assert.deepEqual(colres,["a","b"]);
31
+ done();
32
+ });
33
+
34
+ it('3. Remove columns LIKE', function(done) {
35
+ var data = [{a:1,b1:10,b2:100},{a:2,b1:20,b2:200},];
36
+ var res = alasql('SELECT RECORDSET * REMOVE COLUMNS LIKE "%b" FROM ?',[data]);
37
+ var colres = _.pluck(res.columns,"columnid");
38
+ assert.deepEqual(colres,["a"]);
39
+ done();
40
+ });
41
+
42
+ it('4. Remove multiple columns', function(done) {
43
+ var data = [{a:1,b1:10,b2:100,c:1000, d:10000},{a:2,b1:20,b2:200,c:2000,d:20000},];
44
+ var res = alasql('SELECT RECORDSET * REMOVE COLUMNS LIKE "%b",a,d FROM ?',[data]);
45
+ var colres = _.pluck(res.columns,"columnid");
46
+ assert.deepEqual(colres,["c"]);
47
+ done();
48
+ });
49
+
50
+ it('5. Remove columns from table', function(done) {
51
+ alasql('CREATE TABLE one (a INT, b STRING, c INT)');
52
+ alasql('INSERT INTO one VALUES (1,"One",10),(2,"Two",20),(3,"Three",30)')
53
+ var res = alasql('SELECT RECORDSET * REMOVE COLUMN b FROM one');
54
+ var colres = _.pluck(res.columns,"columnid");
55
+ assert.deepEqual(colres,["a","c"]);
56
+ done();
57
+ });
58
+
59
+ it('99. Drop database', function(done) {
60
+ alasql('DROP DATABASE test272');
61
+ done();
62
+ });
63
+
64
+ });
65
+
66
+
@@ -0,0 +1,69 @@
1
+ if(typeof exports === 'object') {
2
+ var assert = require("assert");
3
+ var alasql = require('..');
4
+ var _ = require('lodash');
5
+ } else {
6
+ __dirname = '.';
7
+ };
8
+
9
+
10
+ describe('Test 273 Source columns detextion', function() {
11
+
12
+ var emptydata = [];
13
+ var data1 = [{a:1,b:10},{a:2,b:20},{a:3,b:30}];
14
+ var data2 = [{b:10,c:100},{b:20,c:200},{b:40,c:400}];
15
+
16
+ it('1. Create database', function(done) {
17
+ alasql('CREATE DATABASE test273; USE test273');
18
+ alasql('CREATE TABLE one(a INT, b INT)');
19
+ alasql('CREATE TABLE two(b INT, c INT)');
20
+ done();
21
+ });
22
+
23
+
24
+ it('2. Empty test on table with columns', function(done) {
25
+ alasql.options.modifier = 'RECORDSET';
26
+ var res = alasql('SELECT * FROM one');
27
+ var colres = _.pluck(res.columns,'columnid');
28
+ assert.deepEqual(colres, ["a","b"]);
29
+ alasql.options.modifier = undefined;
30
+ done();
31
+ });
32
+
33
+ it('3. Star and other column', function(done) {
34
+ alasql.options.modifier = 'RECORDSET';
35
+ var res = alasql('SELECT *,a FROM one');
36
+ var colres = _.pluck(res.columns,'columnid');
37
+ assert.deepEqual(colres, ["a","b","a"]);
38
+
39
+ var res = alasql('SELECT a,*,a FROM one');
40
+ var colres = _.pluck(res.columns,'columnid');
41
+ assert.deepEqual(colres, ["a","a","b","a"]);
42
+ alasql.options.modifier = undefined;
43
+ done();
44
+ });
45
+
46
+ it('4. Subquery', function(done) {
47
+ var res = alasql('SELECT RECORDSET * FROM (SELECT * FROM one)');
48
+ var colres = _.pluck(res.columns,'columnid');
49
+ assert.deepEqual(colres, ["a","b"]);
50
+ done();
51
+ });
52
+
53
+ it('5. JOIN subquery', function(done) {
54
+ var res = alasql('SELECT RECORDSET t.*,s.* FROM (SELECT * FROM one) t \
55
+ JOIN one s USING a');
56
+ var colres = _.pluck(res.columns,'columnid');
57
+ assert.deepEqual(colres, ["a","b","a","b"]);
58
+ done();
59
+ });
60
+
61
+ it('99. Drop database', function(done) {
62
+ delete alasql.options.modifier;
63
+ alasql('DROP DATABASE test273');
64
+ done();
65
+ });
66
+
67
+ });
68
+
69
+
@@ -0,0 +1,31 @@
1
+ if(typeof exports === 'object') {
2
+ var assert = require("assert");
3
+ var alasql = require('..');
4
+ var _ = require('lodash');
5
+ } else {
6
+ __dirname = '.';
7
+ };
8
+
9
+
10
+ describe('Test 274 Count and other bugs', function() {
11
+
12
+
13
+
14
+ it('2. Select count', function(done) {
15
+ var res = alasql('SELECT _ AS a FROM RANGE(1,10)');
16
+ console.log(res);
17
+
18
+ var res = alasql('SELECT * FROM (SELECT _ AS a FROM RANGE(1,10))');
19
+ console.log(res);
20
+
21
+ var res = alasql('SELECT RECORDSET COUNT(*) FROM RANGE(1,10)');
22
+ console.log(res);
23
+ // var colres = _.pluck(res.columns,'columnid');
24
+ // assert.deepEqual(colres, ["a","b"]);
25
+ // alasql.options.modifier = undefined;
26
+ done();
27
+ });
28
+
29
+ });
30
+
31
+