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,59 @@
1
+
2
+ function get1(n,index, cb) {
3
+ var nn = n;
4
+ if(n<0) return;
5
+ if(n>=10) return;
6
+ setTimeout(function(){cb('get1',{a:nn, b:nn*2})},200);
7
+ }
8
+
9
+ function get2(n,index, cb) {
10
+ var nn = n;
11
+ if(n<0) return;
12
+ if(n>=10) return;
13
+ setTimeout(function(){cb('get2',{a:nn, b:nn*3})},100);
14
+ }
15
+
16
+ var times = 0;
17
+ var buff = [];
18
+
19
+ function after(key, data) {
20
+ buff[key] = data;
21
+ console.log(times);
22
+ times++;
23
+ if(times<6) return;
24
+ setTimeout(function(){process(buff)},0);
25
+ console.log('before process');
26
+ }
27
+
28
+ function process(data){
29
+ console.log('process',data);
30
+ console.log('after process');
31
+ };
32
+
33
+ console.log("start");
34
+ get1(1,null,after);
35
+ get1(1,null,after);
36
+ get2(3,null,after);
37
+ get2(4,null,after);
38
+ get2(5,null,after);
39
+ get2(2,null,after);
40
+ console.log("finish");
41
+
42
+
43
+ var k = 5;
44
+ var data = [];
45
+
46
+ var next = function(){
47
+ console.log('next',k)
48
+ data.push(k);
49
+ k--;
50
+ if(k>0) setTimeout(next,0);
51
+ else setTimeout(onfinish,0);
52
+ };
53
+
54
+ var onfinish = function(){
55
+ console.log(data);
56
+ }
57
+
58
+ setTimeout(next,0);
59
+
@@ -0,0 +1,45 @@
1
+
2
+
3
+ var async = false;
4
+
5
+ function alasql(sql, params, cb) {
6
+ var res;
7
+ if(arguments.length < 3) {
8
+ process(sql, params, function(data){
9
+ res = data;
10
+ });
11
+ if(async) {
12
+ throw Error('Use sync version');
13
+ }
14
+ return res;
15
+ } else {
16
+ process(sql, params, function(data) {
17
+ cb(data);
18
+ async = false;
19
+ });
20
+ };
21
+ };
22
+
23
+ function process(sql, params, cb) {
24
+ if(sql == "sync") {
25
+ cb(100);
26
+ } else {
27
+ async = true;
28
+ setTimeout(function(){
29
+ cb(200);
30
+ },100);
31
+ }
32
+ };
33
+
34
+ var res = alasql('async',[],function(data){
35
+ console.log(1,data);
36
+ });
37
+ console.log(2,res);
38
+
39
+
40
+ var res = alasql('sync',[]);
41
+ console.log(3,res);
42
+
43
+ /*
44
+ var res = alasql('async',[]);
45
+ */
@@ -0,0 +1,77 @@
1
+ if(typeof exports === 'object') {
2
+ var assert = require("assert");
3
+ var alasql = require('..');
4
+ };
5
+
6
+ describe('Test 119 - PRIMARY KEY, CREATE INDEX UNIQUE', function() {
7
+
8
+ it('PRIMARY KEY', function(done){
9
+ alasql('create database test119');
10
+ alasql('use test119');
11
+
12
+ alasql('create table one (a int primary key)');
13
+ alasql('insert into one values (1), (2), (3)');
14
+
15
+ assert.throws(function(){
16
+ alasql('insert into one values (1)');
17
+ }, Error);
18
+
19
+ var res = alasql.value('select count(*) from one');
20
+ assert.deepEqual(res, 3);
21
+
22
+ done();
23
+ });
24
+
25
+ it('UNIQUE INDEX-1 before insert', function(done){
26
+
27
+ alasql('create table two (a int)');
28
+ alasql('create unique index twoa on two(a)')
29
+ alasql('insert into two values (1), (2), (3)');
30
+
31
+ assert.throws(function(){
32
+ alasql('insert into two values (1)');
33
+ }, Error);
34
+
35
+ var res = alasql.value('select count(*) from two');
36
+ assert.deepEqual(res, 3);
37
+
38
+ done();
39
+ });
40
+
41
+ it('UNIQUE INDEX-2 after insert', function(done){
42
+
43
+ alasql('create table three (a int)');
44
+ alasql('insert into three values (1), (2), (3), (1)');
45
+ assert.throws(function(){
46
+ alasql('create unique index threea on three(a)')
47
+ }, Error);
48
+
49
+ var res = alasql.value('select count(*) from three');
50
+ assert.deepEqual(res, 4);
51
+
52
+ done();
53
+ });
54
+
55
+ it('UNIQUE INDEX-3 two unique indices and primary key', function(done){
56
+
57
+ alasql('create table four (a int PRIMARY KEY, b int)');
58
+ alasql('create unique index foura on four(a)')
59
+ alasql('insert into four values (1,10), (2,20)');
60
+
61
+ assert.throws(function(){
62
+ alasql('insert into four values (1,10)');
63
+ }, Error);
64
+
65
+ var res = alasql.value('select count(*) from three');
66
+ assert.deepEqual(res, 4);
67
+
68
+ done();
69
+ });
70
+
71
+
72
+ it('Clear database', function(done){
73
+ alasql('drop database test119');
74
+ done();
75
+ });
76
+
77
+ });
@@ -0,0 +1,91 @@
1
+ if(typeof exports === 'object') {
2
+ var assert = require("assert");
3
+ var alasql = require('..');
4
+ };
5
+
6
+ describe('Test 123 - SHOW DATABASES, TABLES, COLUMNS, INDEX, CREATE TABLE', function() {
7
+
8
+ it('1. SHOW DATABASES', function(done){
9
+ alasql('create database test123a');
10
+ alasql('create database test123b');
11
+ alasql('use test123a');
12
+ var res = alasql('show databases');
13
+ assert(res.length >= 3);
14
+ assert(res.filter(function(r) {return r.databaseid == 'test123a' || r.databaseid == 'test123b';}).length == 2);
15
+
16
+ var res = alasql('show databases like "123%"');
17
+ assert(res.length == 2);
18
+ done();
19
+ });
20
+
21
+ it('2. SHOW TABLES', function(done){
22
+ alasql('create table one (a int, b int, c string)');
23
+ alasql('create table two (b int)');
24
+ alasql('create table three (c int)');
25
+ var res = alasql('show tables');
26
+ assert(res.length == 3);
27
+ alasql('use test123b');
28
+ alasql('create table four (a int, b int, c int, d int)');
29
+
30
+ var res = alasql('show tables from test123a');
31
+ assert(res.length == 3);
32
+
33
+ alasql('use test123a');
34
+
35
+ var res = alasql('show tables from test123a like "t%"');
36
+ assert(res.length == 2);
37
+
38
+ done();
39
+ });
40
+
41
+ it('3. SHOW COLUMNS', function(done){
42
+ var res = alasql('show columns from one');
43
+ assert(res.length == 3);
44
+ var res = alasql('show columns from four from test123b ');
45
+ assert(res.length == 4);
46
+ done();
47
+ });
48
+
49
+
50
+ it('4. SHOW CREATE TABLE', function(done){
51
+ var res = alasql('show create table one');
52
+ assert(res == 'CREATE TABLE one (a INT, b INT, c STRING)');
53
+ var res = alasql('show create table four from test123b');
54
+ assert(res == 'CREATE TABLE four (a INT, b INT, c INT, d INT)');
55
+ done();
56
+ });
57
+
58
+ it('5. SHOW INDEX', function(done){
59
+ alasql('insert into one values (1,1,1), (2,2,2), (4,4,4), (5,5,5), (6,6,6)');
60
+ alasql('insert into two values (1),(2),(3),(6)');
61
+
62
+ var res = alasql('show index from one');
63
+ // console.log(res);
64
+
65
+ var res = alasql('select * from one join two using b');
66
+ // console.log(res);
67
+
68
+ var res = alasql('show index from one');
69
+ // console.log(res);
70
+
71
+ alasql('create index twob on two(b)');
72
+
73
+ var res = alasql('show index from two');
74
+ // console.log(res);
75
+
76
+ alasql('create unique index onea on one(a)');
77
+
78
+ var res = alasql('show index from one');
79
+ // console.log(res);
80
+ assert(false);
81
+ done();
82
+ });
83
+
84
+
85
+ it('99.Clear database', function(done){
86
+ alasql('drop database test123a');
87
+ alasql('drop database test123b');
88
+ done();
89
+ });
90
+
91
+ });
@@ -0,0 +1,30 @@
1
+ if(typeof exports === 'object') {
2
+ var assert = require("assert");
3
+ var alasql = require('..');
4
+ } else {
5
+ __dirname = '.';
6
+ };
7
+
8
+ if(false) {
9
+ describe('Test 131 CAST and CONVERT', function() {
10
+
11
+ it('1. CAST', function(done){
12
+ alasql('source "'+__dirname+'/test131.sql"');
13
+ done();
14
+ });
15
+
16
+ it('2. CAST dates', function(done){
17
+ alasql.options.datetimeformat = 'javascript';
18
+ var res = alasql.value('select cast("1998-01-01" as date)');
19
+ assert(typeof res, 'object');
20
+ assert(res instanceof Date);
21
+ assert(res.valueOf(), new Date('1998-01-01').valueOf());
22
+
23
+ alasql.options.datetimeformat = 'sql';
24
+ var res = alasql.value('select cast("1998-01-01" as date)');
25
+ assert(res, "1998-01-01");
26
+ done();
27
+ });
28
+
29
+ });
30
+ }
@@ -0,0 +1,69 @@
1
+ if(typeof exports === 'object') {
2
+ var assert = require("assert");
3
+ var alasql = require('..');
4
+ } else {
5
+ __dirname = '.';
6
+ };
7
+
8
+ describe('Test 132 Alasql + NoSQL', function() {
9
+
10
+ it("1. Prepare database", function(done){
11
+ alasql('CREATE DATABASE test132; USE test132');
12
+ alasql('CREATE TABLE one (a INT, b STRING)');
13
+ alasql('CREATE TABLE two');
14
+ // alasql('CREATE TABLE three ?',[{columnid:"a"},{columnid:"b"}]);
15
+ done();
16
+ });
17
+
18
+ it("2. INSERT", function(done) {
19
+ alasql('INSERT INTO one VALUES (1,"One"), (2,"Two")');
20
+ alasql('INSERT INTO one VALUES @{a:3,b:"Three"}, @{a:4,b:"Four"}, (5,"Five")');
21
+ alasql('INSERT INTO one VALUES ?,?,(?,?)',[{a:6,b:'Six'}, {a:7,b:'Seven'}, 8, "Eight"]);
22
+ alasql.tables.one.insert({a:9,b:"Nine"});
23
+ alasql.tables.two.insert({a:1,b:[2,{c:3},4]});
24
+ alasql.tables.two.insert({a:1,b:[2,{c:5},4]});
25
+ alasql.tables.two.insert({a:1,b:[2,{c:6},4]});
26
+ done();
27
+ });
28
+
29
+ it("3. SELECT", function(done) {
30
+ var res1 = alasql('SELECT * FROM one WHERE b IN (2,3)');
31
+ var res2 = alasql('SELECT * FROM one WHERE @{b:@[2,3]}');
32
+ var res3 = alasql.tables.one.find({b:[2,3]});
33
+ assert.deepEqual(res1,res2);
34
+ assert.deepEqual(res1,res3);
35
+
36
+ var res1 = alasql('SELECT (a = 2) AS alpha FROM one WHERE b IN (2,3)');
37
+ var res2 = alasql('SELECT @{a:2} AS alpha FROM one WHERE @{b:[2,3]}');
38
+ assert.deepEqual(res1,res2);
39
+
40
+ done();
41
+ });
42
+
43
+
44
+ it("4. DEEP SELECT...", function(done) {
45
+ // var res2 = alasql('SELECT * FROM two WHERE ...');
46
+
47
+ done();
48
+ });
49
+
50
+ it("5. UPDATE", function(done) {
51
+ alasql('UPDATE one SET {a:2} WHERE {a:3}');
52
+ alasql('UPDATE one SET a=2 WHERE a=3');
53
+ alasql.tables.one.update({a:2}, {a:3});
54
+ done();
55
+ });
56
+
57
+ it("6. UPDATE", function(done) {
58
+ alasql('DELETE FROM one WHERE @{a:2}');
59
+ alasql('DELETE FROM one WHERE a=2');
60
+ alasql.tables.one.remove({a:2})
61
+ done();
62
+ });
63
+
64
+ it("99. UPDATE", function(done) {
65
+ alasql('DROP DATABASE test132');
66
+ done();
67
+ });
68
+
69
+ });
@@ -0,0 +1,51 @@
1
+ if(typeof exports === 'object') {
2
+ var assert = require("assert");
3
+ var alasql = require('..');
4
+ } else {
5
+ __dirname = '.';
6
+ };
7
+
8
+ describe('Test 134 SELECT FROM', function() {
9
+ if(false) {
10
+ it("1. Load data from CSV and TAB", function(done){
11
+ alasql('CREATE DATABASE test134; USE test134');
12
+ alasql('CREATE TABLE one (a INT, b STRING)');
13
+ alasql('SELECT * INTO one FROM CSV("'+__dirname+'/test134.csv",true)')
14
+ alasql('SELECT [0] AS a, [1] AS b INTO one FROM TAB("'+__dirname+'/test134.tab")')
15
+
16
+ var res = alasql('SELECT VALUE COUNT(*) FROM one');
17
+ assert(res == 10);
18
+
19
+ done();
20
+ });
21
+
22
+ it("2. INSERT (Node.js only)", function(done) {
23
+ if(typeof exports === 'object') {
24
+ alasql('SELECT * INTO CSV("'+__dirname+'/out/test134-out.csv", true)');
25
+ alasql('SELECT * INTO TAB("'+__dirname+'/out/test134-out.tab", false)');
26
+ done();
27
+ };
28
+ });
29
+
30
+ it("3. EXCEL LOAD (require load sheet.xls libraries", function(done) {
31
+ alasql('SELECT * FROM XLS("'+__dirname+'/out/test134.xls", true, "Sheet1")');
32
+ alasql('SELECT * FROM XLSX("'+__dirname+'/out/test134.xlsx", false, "Sheet2", "A2:C4")');
33
+ alasql('SELECT * FROM XLSX("'+__dirname+'/out/test134.xlsx", "A", "Sheet2", "B2:C4")');
34
+ done();
35
+ });
36
+
37
+ it("4. EXCEL SAVE", function(done) {
38
+ if(typeof exports === 'object') {
39
+ alasql('SELECT * INTO XLS("'+__dirname+'/out/test134-out.xls", true)');
40
+ alasql('SELECT * INTO XLSX("'+__dirname+'/out/test134-out.xlsx", false)');
41
+ done();
42
+ };
43
+ });
44
+
45
+
46
+ it("99. UPDATE", function(done) {
47
+ alasql('DROP DATABASE test134');
48
+ done();
49
+ });
50
+ }
51
+ });
@@ -0,0 +1,28 @@
1
+ if(typeof exports === 'object') {
2
+ var assert = require("assert");
3
+ var alasql = require('..');
4
+ } else {
5
+ __dirname = '.';
6
+ };
7
+
8
+ describe('Test 135 a la NoSQL', function() {
9
+
10
+ var test135;
11
+ it("1. Insert NoSQL", function(done){
12
+ var test135 = alasql.create("test135");
13
+ var one = test135.create("one");
14
+ one.insert({a:1,b:2}, function(res) {
15
+ assert(res == 1);
16
+ one.find({a:1}, function(res) {
17
+ assert.deepEqual(res, {a:1,b:2});
18
+ done();
19
+ });
20
+ });
21
+ });
22
+
23
+ it("99. Clear database", function(done){
24
+ test135.drop();
25
+ done();
26
+ });
27
+
28
+ });
@@ -0,0 +1,23 @@
1
+ if(typeof exports === 'object') {
2
+ var assert = require("assert");
3
+ var alasql = require('..');
4
+ } else {
5
+ __dirname = '.';
6
+ };
7
+
8
+ describe('Test 136 get JSON property', function() {
9
+
10
+ it("1. Get element of object and Array", function(done){
11
+ var res = alasql('SELECT * FROM JSON([{a:1,b:[3,4]},{e:1}]) WHERE b->[1] = 4');
12
+ assert.deepEqual(res, [{a:1,b:[3,4]}]);
13
+
14
+ var res = alasql('SELECT * FROM JSON([{a:1,b:[3,4]},{e:1}]) WHERE b == JSON([3,4])');
15
+ assert.deepEqual(res, [{a:1,b:[3,4]}]);
16
+
17
+ var res = alasql('SELECT * FROM JSON([{a:1,b:[3,4]},{e:1}]) WHERE e = 1');
18
+ assert.deepEqual(res, [{e:1}]);
19
+
20
+ done();
21
+ });
22
+
23
+ });
@@ -0,0 +1,27 @@
1
+ if(typeof exports === 'object') {
2
+ var assert = require("assert");
3
+ var alasql = require('..');
4
+ } else {
5
+ __dirname = '.';
6
+ };
7
+
8
+ describe('Test 147 - WebSQL Database', function() {
9
+
10
+ it("1. Nested SQL", function(done){
11
+ var res = alasql('CREATE WebSQL DATABASE wd147 ("1.0","My database",1024*1024) AS test147');
12
+ console.log('done', res);
13
+ done();
14
+ // alasql('ATTACH WebSQL DATABASE wd147', [], function() {
15
+ // alasql('USE wd147',[],function() {
16
+ // done();
17
+ // });
18
+ // });
19
+ // });
20
+ });
21
+
22
+ it("99. Detach database", function(done){
23
+ // Do we really need this?
24
+ done();
25
+ });
26
+ });
27
+
@@ -0,0 +1,39 @@
1
+ CREATE CLASS G1;
2
+ CREATE CLASS G2;
3
+
4
+ CREATE VERTEX G1;
5
+ CREATE EDGE G1;
6
+ CREATE EDGE G2;
7
+
8
+ SEARCH VERTEX() OUTE() CLASS(G2) OUTV() FROM G1;
9
+
10
+ SEARCH OUTV() :(($node='vertex') AND ($class = 'G1')) age FROM G1
11
+ SEARCH "Napoleon" OUTV() COUNT() FROM Person;
12
+
13
+ SELECT age, COUNT() ;
14
+
15
+ SEARCH "Napoleon" BOTHV("loves", "likes") :G1 (age < 33) {name,age,sex,relation:(PARENT(1)->name)} FROM Person;
16
+
17
+ {headers:self[headers]}
18
+
19
+ SEARCH :Person "Napoleon" BOTHV("loves", "likes") :G1805 (age < 33) {name,age,sex,relation:(PARENT(1)->name)};
20
+ SEARCH "Napoleon" OUTV() OUTV() NOT("Napoleon") @[PARENT(1),PARENT(2)];
21
+
22
+ $name
23
+ $class
24
+ $type
25
+
26
+ $inv
27
+ $outv
28
+ $ine
29
+ $outv
30
+ $bothv
31
+
32
+ Вопросы:
33
+ 1) Синтаксис формул
34
+ 2) Двунаправленный граф
35
+ 3) Поиск по дереву - компактный однонаправленный граф
36
+ CREATE TREE G2 ID aasa PARENT aaa CHILDREN ddds FROM (SELECT * FROM ?)
37
+ CREATE VERTEX SET $id=source, name=sourcename SELECT
38
+
39
+ GAZE
@@ -0,0 +1,3 @@
1
+ # Graph samples and tests
2
+
3
+ This example was taken from [here](https://gist.github.com/mbostock/4062045)
@@ -0,0 +1,110 @@
1
+ SEARCH Operator
2
+ ===
3
+
4
+ SEARCH selector WHILE expression;
5
+
6
+ selector
7
+ literal PROP(literal)
8
+ number PROP(number)
9
+ string NAME(string)
10
+ (expression) OK(expression)
11
+ @(expression) VAL(xpression)
12
+ : literal - is class - CLASS(literal)
13
+ AS literal - AS(literal)
14
+ MEM literal - MEM(literal)
15
+ {json object} - VAL({json object})
16
+ @[json array] - VAL(@[json array])
17
+
18
+ MORE() + (selector) - SEVAL('MORE',selector)
19
+ MANY() * (selector) - SEVAL('MANY',selector)
20
+ NOT() ! (selector) - SEVAL('NOT', selector)
21
+ ANY(expression) - SEVAL('ANY', sel-list)
22
+ ALL(expression)
23
+
24
+ # - REF()
25
+ IN/OUT/BOTH(literal,string,...) - class, name=string
26
+ EQ(expression), NE(expression)
27
+ COUNT()
28
+ PARENT()
29
+ PARENTS()
30
+ ROOT()
31
+ ROUTE(selector)
32
+
33
+ Samples:
34
+ ===
35
+ SEARCH :Crew "Neo" AS n +(> "knows" SAVE r >) > m {n,r,m};
36
+ SEARCH :Crew "Neo" AS n +(> "knows" > MEM m) {r,m};
37
+ SEARCH CLASS(Crew) NAME("Neo") AS(n) MORE(OUT() NAME("knows") OUT() MEM(m)) VAL({r,m});
38
+
39
+ SEARCH selector
40
+ selector:
41
+ sel-list sel;
42
+ sel;
43
+ ;
44
+
45
+ sel
46
+ vsel = literal (expr-list)
47
+ ssel = literal (selector-list)
48
+
49
+ ssel
50
+ MORE, MANY, ROUTE, NOT
51
+
52
+ OUT(selector) - OUT(CLASS(G1) NODE(vertex) NAME(likes))
53
+
54
+ $in:[]
55
+ $out:[]
56
+ $id:
57
+ $class:
58
+ $node:"edge","vertex"
59
+ name:
60
+
61
+ SEARCH DISTINCT CLASS(users) MANY(OUTV(),1,5) OK(status = "down");
62
+ SEARCH ALL(PROP() ());
63
+
64
+ toJavaScript(p,'st')
65
+
66
+ SELECT * FROM Cars WHERE EXISTS (SEARCH CLASS(Person) AS p OUT(CLASS(owns)) CLASS(Car) (name = A.a ) p);
67
+
68
+ SELECT * FROM Cars WHERE EXISTS (SEARCH CLASS(Person) AS p OUT(CLASS(owns)) CLASS(Car) (name = A.a ) p);
69
+
70
+
71
+ selector array []
72
+
73
+
74
+ parsert
75
+ function Search(selector);
76
+ {selid: 'CLASS', args: [{literal:'Person'}] }
77
+ yy.Selector({selid:'CLASS', args:[new yy.Literal({literal:'Person'})]});
78
+ if(args[0].literal) {
79
+ if(stack.lenght == 0) {
80
+ stack.push(tables[classid].data);
81
+ }
82
+ }
83
+ gonext();
84
+
85
+
86
+ alasql.aggr.MEDIAN = function(val,acc,wnenid) {
87
+ if(whenid==1) {
88
+
89
+ } else if(whenid==2) {
90
+
91
+ } else if(whenid==3) {
92
+
93
+ }
94
+
95
+ if(typeof acc = 'undefined') {
96
+
97
+ }
98
+
99
+ if(typeof acc.arr = 'undefined') {
100
+
101
+ }
102
+ }
103
+
104
+
105
+ }
106
+
107
+
108
+
109
+
110
+
@@ -0,0 +1,22 @@
1
+ //
2
+ // Load and create graph in memory
3
+ //
4
+ var data = alasql('SELECT * FROM JSON("miserables.json")');
5
+ alasql('CREATE CLASS Person');
6
+ alasql('CREATE VERTEX Person SELECT "#"+ROWNUM() AS [$id], * FROM ?',[data.nodes]);
7
+ alasql('CREATE EDGE FROM "#"+source TO "#"+target SELECT * FROM ?',[data.links]);
8
+
9
+ //
10
+ // Napoleon graph research
11
+ //
12
+ alasql('SEARCH "Napoleon" OUTE() (value>2) OUTV() name FROM Person');
13
+ var napoleon = alasql('SEARCH "Napoleon" FROM Person');
14
+ alasql('SET @napoleon = (SEARCH "Napoleon" FROM Person)');
15
+ var res = alasql('SEARCH "Napoleon" >> FROM Person ');
16
+ var res = alasql('SEARCH "Napoleon" > ([value]>2) > FROM Person ');
17
+ var res = alasql('SEARCH "Napoleon" > @([value]>2) FROM Person ');
18
+ -- [true,true,false]
19
+ var res = alasql('SEARCH "Napoleon" > > > > NE("Napoleon") FROM Person ');
20
+ var res = alasql('SEARCH "Napoleon" >> >> NE("Napoleon") FROM Person ');
21
+ var res = alasql('SEARCH >> >> NE($0) FROM $0',[napoleon]);
22
+ var res = alasql('SEARCH >> >> NE(ROOT()) FROM @napoleon');