Changeset: 99acc8c5db0d for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=99acc8c5db0d
Modified Files:
monetdb5/extras/jaql/Tests/All
monetdb5/extras/jaql/Tests/expand01.mal
monetdb5/extras/jaql/Tests/filter01.mal
monetdb5/extras/jaql/Tests/group01.mal
monetdb5/extras/jaql/Tests/join01.mal
monetdb5/extras/jaql/Tests/sort01.mal
monetdb5/extras/jaql/Tests/top01.mal
monetdb5/extras/jaql/Tests/top01.stable.err
monetdb5/extras/jaql/Tests/top01.stable.out
monetdb5/extras/jaql/Tests/transform01.mal
monetdb5/extras/jaql/Tests/transform01.stable.err
monetdb5/extras/jaql/Tests/transform01.stable.out
Branch: jacqueline
Log Message:
jaql: add tests from docs
diffs (252 lines):
diff --git a/monetdb5/extras/jaql/Tests/All b/monetdb5/extras/jaql/Tests/All
--- a/monetdb5/extras/jaql/Tests/All
+++ b/monetdb5/extras/jaql/Tests/All
@@ -5,3 +5,16 @@ sort00
top00
variable00
plan00
+
+# examples from the docs
+#fail until we implement combined predicates
+#filter01
+transform01
+#fail until we solve the syntactic mess of expand
+#expand01
+#todo
+#group01
+#join01
+#fail until we implement complex comparator and array refs
+#sort01
+top01
diff --git a/monetdb5/extras/jaql/Tests/expand01.mal
b/monetdb5/extras/jaql/Tests/expand01.mal
new file mode 100644
--- /dev/null
+++ b/monetdb5/extras/jaql/Tests/expand01.mal
@@ -0,0 +1,11 @@
+# from the docs
+
+jaql.x("nestedData = [ [3,65,8,72], [5,98,2,65] ];");
+jaql.x("nestedData -> expand;");
+jaql.x("nestedData -> expand ($ -> transform $ * 2);");
+jaql.x("nestedData -> expand each arr (arr -> transform each n (n * 2));");
+jaql.x("nestedData -> expand -> transform $ * 2;");
+
+jaql.x("moviesOwned = [ {\"name\":\"Jon Doe\", \"movie_ids\":[3,65,8,72]},
{\"name\":\"Jane Dean\", \"movie_ids\":[5,98,2]} ];");
+jaql.x("moviesOwned -> expand unroll $.movie_ids;");
+
diff --git a/monetdb5/extras/jaql/Tests/filter01.mal
b/monetdb5/extras/jaql/Tests/filter01.mal
new file mode 100644
--- /dev/null
+++ b/monetdb5/extras/jaql/Tests/filter01.mal
@@ -0,0 +1,6 @@
+# from the docs
+
+jaql.x("employees = [{\"name\": \"Jon Doe\", \"income\": 20000, \"mgr\":
false}, {\"name\": \"Vince Wayne\", \"income\": 32500, \"mgr\": false},
{\"name\": \"Jane Dean\", \"income\": 72000, \"mgr\": true}, {\"name\": \"Alex
Smith\", \"income\": 25000, \"mgr\": false} ];");
+jaql.x("employees -> filter $.mgr or $.income > 30000;");
+jaql.x("employees -> filter each emp emp.mgr or emp.income > 30000;");
+jaql.x("employees -> filter each emp (emp.mgr or emp.income > 30000);");
diff --git a/monetdb5/extras/jaql/Tests/group01.mal
b/monetdb5/extras/jaql/Tests/group01.mal
new file mode 100644
--- /dev/null
+++ b/monetdb5/extras/jaql/Tests/group01.mal
@@ -0,0 +1,9 @@
+# from the docs
+
+jaql.x("employees = [ {\"id\":1, \"dept\": 1, \"income\":12000}, {\"id\":2,
\"dept\": 1, \"income\":13000}, {\"id\":3, \"dept\": 2, \"income\":15000},
{\"id\":4, \"dept\": 1, \"income\":10000}, {\"id\":5, \"dept\": 3,
\"income\":8000}, {\"id\":6, \"dept\": 2, \"income\":5000}, {\"id\":7,
\"dept\": 1, \"income\":24000} ]; ");
+jaql.x("employees -> group into count($);");
+jaql.x("employees -> group by d = $.dept into {d, total: sum($[*].income)};");
+jaql.x("employees -> group each emp by d = emp.dept as deptEmps into {d,
total: sum(deptEmps[*].income)};");
+
+jaql.x("depts = [ {\"did\": 1, \"name\": \"development\"}, {\"did\": 2,
\"name\": \"marketing\"}, {\"did\": 3, \"name\": \"sales\"} ];");
+jaql.x("group employees by g = $.dept as es, depts by g = $.did as ds into {
dept: g, deptName: ds[0].name, emps: es[*].id, numEmps: count(es) };");
diff --git a/monetdb5/extras/jaql/Tests/join01.mal
b/monetdb5/extras/jaql/Tests/join01.mal
new file mode 100644
--- /dev/null
+++ b/monetdb5/extras/jaql/Tests/join01.mal
@@ -0,0 +1,8 @@
+# from the docs
+
+jaql.x("users = [ {\"name\": "Jon Doe", \"password\": \"asdf1234\", \"id\":
1}, {\"name\": "Jane Doe", \"password\": \"qwertyui\", \"id\": 2}, {\"name\":
"Max Mustermann", \"password\": \"q1w2e3r4\", \"id\": 3} ];");
+jaql.x("pages = [ {\"userid\": 1, \"url\":\"code.google.com/p/jaql/\"},
{\"userid\": 2, \"url\":\"www.cnn.com\"}, {\"userid\": 1,
\"url\":\"java.sun.com/javase/6/docs/api/\"} ];");
+
+jaql.x("join users, pages where users.id == pages.userid into {users.name,
pages.*};");
+jaql.x("join u in users, p in pages where u.id == p.userid into {u.name,
p.*};");
+jaql.x("join preserve u in users, p in pages where u.id == p.userid into
{u.name, p.*};");
diff --git a/monetdb5/extras/jaql/Tests/sort01.mal
b/monetdb5/extras/jaql/Tests/sort01.mal
new file mode 100644
--- /dev/null
+++ b/monetdb5/extras/jaql/Tests/sort01.mal
@@ -0,0 +1,9 @@
+# from the docs
+
+jaql.x("nums = [ 2, 1, 3 ];");
+jaql.x("nums -> sort by [ $ ];");
+jaql.x("nums -> sort each n by [ n ];");
+jaql.x("nums -> sort by [ $ desc ];");
+
+jaql.x("test =
[[2,2,\"first\"],[1,2,\"second\"],[2,1,\"third\"],[1,1,\"fourth\"]];");
+jaql.x("test -> sort by [$[0], $[1] desc];");
diff --git a/monetdb5/extras/jaql/Tests/top01.mal
b/monetdb5/extras/jaql/Tests/top01.mal
new file mode 100644
--- /dev/null
+++ b/monetdb5/extras/jaql/Tests/top01.mal
@@ -0,0 +1,5 @@
+# from the docs
+
+jaql.x("nums = [1,2,3];");
+jaql.x("nums -> top 2;");
+jaql.x("nums -> top 2 by [ $ desc ];");
diff --git a/monetdb5/extras/jaql/Tests/top01.stable.err
b/monetdb5/extras/jaql/Tests/top01.stable.err
new file mode 100644
--- /dev/null
+++ b/monetdb5/extras/jaql/Tests/top01.stable.err
@@ -0,0 +1,31 @@
+stderr of test 'top01` in directory 'extras/jaql` itself:
+
+
+# 17:55:14 >
+# 17:55:14 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set"
"gdk_dbfarm=/net/sofia.ins.cwi.nl/export/scratch1/fabian/tmp/mtest-jacqueline-sofia.ins.cwi.nl/five/dbfarm"
"--set" "mapi_open=true" "--set" "mapi_port=34844" "--set" "monet_prompt="
"--trace" "--forcemito" "--set" "mal_listing=2" "--dbname=mTests_extras_jaql"
"top01.mal"
+# 17:55:14 >
+
+# builtin opt gdk_dbname = demo
+# builtin opt gdk_dbfarm =
/ufs/fabian/scratch/ssd/monetdb/jacqueline/program-x86_64/var/lib/monetdb5/dbfarm
+# builtin opt gdk_debug = 0
+# builtin opt gdk_alloc_map = no
+# builtin opt gdk_vmtrim = yes
+# builtin opt monet_prompt = >
+# builtin opt monet_daemon = no
+# builtin opt mapi_port = 50000
+# builtin opt mapi_open = false
+# builtin opt mapi_autosense = false
+# builtin opt sql_optimizer = default_pipe
+# builtin opt sql_debug = 0
+# cmdline opt gdk_nr_threads = 0
+# cmdline opt gdk_dbfarm =
/net/sofia.ins.cwi.nl/export/scratch1/fabian/tmp/mtest-jacqueline-sofia.ins.cwi.nl/five/dbfarm
+# cmdline opt mapi_open = true
+# cmdline opt mapi_port = 34844
+# cmdline opt monet_prompt =
+# cmdline opt mal_listing = 2
+# cmdline opt gdk_dbname = mTests_extras_jaql
+
+# 17:55:15 >
+# 17:55:15 > "Done."
+# 17:55:15 >
+
diff --git a/monetdb5/extras/jaql/Tests/top01.stable.out
b/monetdb5/extras/jaql/Tests/top01.stable.out
new file mode 100644
--- /dev/null
+++ b/monetdb5/extras/jaql/Tests/top01.stable.out
@@ -0,0 +1,31 @@
+stdout of test 'top01` in directory 'extras/jaql` itself:
+
+
+# 17:55:14 >
+# 17:55:14 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set"
"gdk_dbfarm=/net/sofia.ins.cwi.nl/export/scratch1/fabian/tmp/mtest-jacqueline-sofia.ins.cwi.nl/five/dbfarm"
"--set" "mapi_open=true" "--set" "mapi_port=34844" "--set" "monet_prompt="
"--trace" "--forcemito" "--set" "mal_listing=2" "--dbname=mTests_extras_jaql"
"top01.mal"
+# 17:55:14 >
+
+# MonetDB 5 server v11.8.0 "jacqueline-497cf791babb+"
+# Serving database 'mTests_extras_jaql', using 8 threads
+# Compiled for x86_64-pc-linux-gnu/64bit with 64bit OIDs dynamically linked
+# Found 15.662 GiB available main-memory.
+# Copyright (c) 1993-July 2008 CWI.
+# Copyright (c) August 2008-2012 MonetDB B.V., all rights reserved
+# Visit http://www.monetdb.org/ for further information
+# Listening for connection requests on mapi:monetdb://sofia.ins.cwi.nl:34844/
+# MonetDB/GIS module loaded
+# MonetDB/SQL module loaded
+# MonetDB/DataCell module not loaded: MALException:jaql.context:JAQL
environment not found
+function user.main():void;
+# from the docs
+ jaql.x("nums = [1,2,3];");
+ jaql.x("nums -> top 2;");
+ jaql.x("nums -> top 2 by [ $ desc ];");
+end main;
+[ 1, 2 ]
+[ 3, 2 ]
+
+# 17:55:15 >
+# 17:55:15 > "Done."
+# 17:55:15 >
+
diff --git a/monetdb5/extras/jaql/Tests/transform01.mal
b/monetdb5/extras/jaql/Tests/transform01.mal
new file mode 100644
--- /dev/null
+++ b/monetdb5/extras/jaql/Tests/transform01.mal
@@ -0,0 +1,5 @@
+# from the docs
+
+jaql.x("recs = [ {\"a\": 1, \"b\": 4}, {\"a\": 2, \"b\": 5}, {\"a\": -1,
\"b\": 4} ];");
+jaql.x("recs -> transform {\"sum\": $.a + $.b};");
+jaql.x("recs -> transform each r {\"sum\": r.a + r.b};");
diff --git a/monetdb5/extras/jaql/Tests/transform01.stable.err
b/monetdb5/extras/jaql/Tests/transform01.stable.err
new file mode 100644
--- /dev/null
+++ b/monetdb5/extras/jaql/Tests/transform01.stable.err
@@ -0,0 +1,31 @@
+stderr of test 'transform01` in directory 'extras/jaql` itself:
+
+
+# 17:25:41 >
+# 17:25:41 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set"
"gdk_dbfarm=/net/sofia.ins.cwi.nl/export/scratch1/fabian/tmp/mtest-jacqueline-sofia.ins.cwi.nl/five/dbfarm"
"--set" "mapi_open=true" "--set" "mapi_port=32458" "--set" "monet_prompt="
"--trace" "--forcemito" "--set" "mal_listing=2" "--dbname=mTests_extras_jaql"
"transform01.mal"
+# 17:25:41 >
+
+# builtin opt gdk_dbname = demo
+# builtin opt gdk_dbfarm =
/ufs/fabian/scratch/ssd/monetdb/jacqueline/program-x86_64/var/lib/monetdb5/dbfarm
+# builtin opt gdk_debug = 0
+# builtin opt gdk_alloc_map = no
+# builtin opt gdk_vmtrim = yes
+# builtin opt monet_prompt = >
+# builtin opt monet_daemon = no
+# builtin opt mapi_port = 50000
+# builtin opt mapi_open = false
+# builtin opt mapi_autosense = false
+# builtin opt sql_optimizer = default_pipe
+# builtin opt sql_debug = 0
+# cmdline opt gdk_nr_threads = 0
+# cmdline opt gdk_dbfarm =
/net/sofia.ins.cwi.nl/export/scratch1/fabian/tmp/mtest-jacqueline-sofia.ins.cwi.nl/five/dbfarm
+# cmdline opt mapi_open = true
+# cmdline opt mapi_port = 32458
+# cmdline opt monet_prompt =
+# cmdline opt mal_listing = 2
+# cmdline opt gdk_dbname = mTests_extras_jaql
+
+# 17:25:41 >
+# 17:25:41 > "Done."
+# 17:25:41 >
+
diff --git a/monetdb5/extras/jaql/Tests/transform01.stable.out
b/monetdb5/extras/jaql/Tests/transform01.stable.out
new file mode 100644
--- /dev/null
+++ b/monetdb5/extras/jaql/Tests/transform01.stable.out
@@ -0,0 +1,31 @@
+stdout of test 'transform01` in directory 'extras/jaql` itself:
+
+
+# 17:25:41 >
+# 17:25:41 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set"
"gdk_dbfarm=/net/sofia.ins.cwi.nl/export/scratch1/fabian/tmp/mtest-jacqueline-sofia.ins.cwi.nl/five/dbfarm"
"--set" "mapi_open=true" "--set" "mapi_port=32458" "--set" "monet_prompt="
"--trace" "--forcemito" "--set" "mal_listing=2" "--dbname=mTests_extras_jaql"
"transform01.mal"
+# 17:25:41 >
+
+# MonetDB 5 server v11.8.0 "jacqueline-497cf791babb+"
+# Serving database 'mTests_extras_jaql', using 8 threads
+# Compiled for x86_64-pc-linux-gnu/64bit with 64bit OIDs dynamically linked
+# Found 15.662 GiB available main-memory.
+# Copyright (c) 1993-July 2008 CWI.
+# Copyright (c) August 2008-2012 MonetDB B.V., all rights reserved
+# Visit http://www.monetdb.org/ for further information
+# Listening for connection requests on mapi:monetdb://sofia.ins.cwi.nl:32458/
+# MonetDB/GIS module loaded
+# MonetDB/SQL module loaded
+# MonetDB/DataCell module not loaded: MALException:jaql.context:JAQL
environment not found
+function user.main():void;
+# from the docs
+ jaql.x("recs = [ {\"a\": 1, \"b\": 4}, {\"a\": 2, \"b\": 5}, {\"a\": -1,
\"b\": 4} ];");
+ jaql.x("recs -> transform {\"sum\": $.a + $.b};");
+ jaql.x("recs -> transform each r {\"sum\": r.a + r.b};");
+end main;
+[ { "sum": 5 }, { "sum": 7 }, { "sum": 3 } ]
+[ { "sum": 5 }, { "sum": 7 }, { "sum": 3 } ]
+
+# 17:25:41 >
+# 17:25:41 > "Done."
+# 17:25:41 >
+
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list