alf-shell 0.16.0 → 0.16.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Gemfile.lock +11 -11
- data/doc/man/alf-explain.man +1 -1
- data/doc/man/alf-metadata.man +1 -1
- data/doc/man/alf-repl.man +3 -3
- data/doc/man/alf-show.man +2 -2
- data/doc/man/alf.man +15 -15
- data/doc/man/allbut.man +1 -1
- data/doc/man/among.man +1 -1
- data/doc/man/avg.man +2 -2
- data/doc/man/between.man +1 -1
- data/doc/man/concat.man +2 -2
- data/doc/man/contradiction.man +2 -2
- data/doc/man/count.man +1 -1
- data/doc/man/eq.man +2 -2
- data/doc/man/extend.man +3 -3
- data/doc/man/frame.man +1 -1
- data/doc/man/group.man +2 -2
- data/doc/man/gt.man +2 -2
- data/doc/man/gte.man +2 -2
- data/doc/man/image.man +2 -2
- data/doc/man/intersect.man +1 -1
- data/doc/man/join.man +2 -2
- data/doc/man/lt.man +2 -2
- data/doc/man/lte.man +2 -2
- data/doc/man/matching.man +1 -1
- data/doc/man/max.man +2 -2
- data/doc/man/min.man +2 -2
- data/doc/man/minus.man +1 -1
- data/doc/man/native.man +2 -2
- data/doc/man/neq.man +2 -2
- data/doc/man/not_matching.man +1 -1
- data/doc/man/page.man +4 -4
- data/doc/man/project.man +1 -1
- data/doc/man/rank.man +1 -1
- data/doc/man/rename.man +1 -1
- data/doc/man/restrict.man +2 -2
- data/doc/man/stddev.man +2 -2
- data/doc/man/sum.man +2 -2
- data/doc/man/summarize.man +1 -1
- data/doc/man/tautology.man +2 -2
- data/doc/man/ungroup.man +1 -1
- data/doc/man/union.man +1 -1
- data/doc/man/unwrap.man +2 -2
- data/doc/man/variance.man +2 -2
- data/doc/man/wrap.man +1 -1
- data/lib/alf/shell/version.rb +1 -1
- metadata +26 -46
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 4a1a480b979751b79dc3360a3cadb4032cc21ded
|
4
|
+
data.tar.gz: 6b52e7b4eb078a2b326f113e2fa783a2c4e1af71
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d5be1e6b44eab6aaef680ed8cc819da2d01b25be8bc6b1b3c1b1a7fff059d76d54895947c23390c20abc9f03177ebf8b567f5db328bb79fe226f083dd509ea03
|
7
|
+
data.tar.gz: cc060b72d2c62da2d05a2ad3049108a5e7b60321d9db5fb26cb614f6b7162479e7c071a415e2f6b48c57b110058211c4730fa801b762d63cb5c8fe3b5c8c1e7b
|
data/Gemfile.lock
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
alf-shell (0.16.
|
5
|
-
alf-core (= 0.16.
|
4
|
+
alf-shell (0.16.1)
|
5
|
+
alf-core (= 0.16.1)
|
6
6
|
highline (~> 1.6)
|
7
7
|
quickl (~> 0.4.3)
|
8
8
|
|
9
9
|
PATH
|
10
10
|
remote: ../alf-core
|
11
11
|
specs:
|
12
|
-
alf-core (0.16.
|
12
|
+
alf-core (0.16.1)
|
13
13
|
domain (~> 1.0)
|
14
14
|
myrrha (~> 3.0)
|
15
15
|
path (~> 1.3)
|
@@ -18,28 +18,28 @@ PATH
|
|
18
18
|
PATH
|
19
19
|
remote: ../alf-doc
|
20
20
|
specs:
|
21
|
-
alf-doc (0.16.
|
22
|
-
alf-core (= 0.16.
|
21
|
+
alf-doc (0.16.1)
|
22
|
+
alf-core (= 0.16.1)
|
23
23
|
|
24
24
|
GEM
|
25
25
|
remote: http://rubygems.org/
|
26
26
|
specs:
|
27
|
-
diff-lcs (1.2.
|
27
|
+
diff-lcs (1.2.5)
|
28
28
|
domain (1.0.0)
|
29
|
-
highline (1.6.
|
29
|
+
highline (1.6.21)
|
30
30
|
myrrha (3.0.0)
|
31
31
|
domain (~> 1.0)
|
32
32
|
path (1.3.3)
|
33
33
|
quickl (0.4.3)
|
34
|
-
rake (10.1
|
34
|
+
rake (10.3.1)
|
35
35
|
rspec (2.14.1)
|
36
36
|
rspec-core (~> 2.14.0)
|
37
37
|
rspec-expectations (~> 2.14.0)
|
38
38
|
rspec-mocks (~> 2.14.0)
|
39
|
-
rspec-core (2.14.
|
40
|
-
rspec-expectations (2.14.
|
39
|
+
rspec-core (2.14.8)
|
40
|
+
rspec-expectations (2.14.5)
|
41
41
|
diff-lcs (>= 1.1.3, < 2.0)
|
42
|
-
rspec-mocks (2.14.
|
42
|
+
rspec-mocks (2.14.6)
|
43
43
|
sexpr (0.6.0)
|
44
44
|
|
45
45
|
PLATFORMS
|
data/doc/man/alf-explain.man
CHANGED
data/doc/man/alf-metadata.man
CHANGED
@@ -10,4 +10,4 @@ This command prints some metadata (e.g. heading, keys, etc.) about the
|
|
10
10
|
expression passed as first argument.
|
11
11
|
.SH Example
|
12
12
|
.PP
|
13
|
-
\fB\fCalf\fR \fB\fC
|
13
|
+
\fB\fCalf\fR \fB\fC\-\-examples\fR metadata "restrict(suppliers, city: 'London')"
|
data/doc/man/alf-repl.man
CHANGED
@@ -3,11 +3,11 @@
|
|
3
3
|
Launches Alf's Read\-Eval\-Print\-Loop (REPL) web application.
|
4
4
|
.SH Synopsis
|
5
5
|
.PP
|
6
|
-
\fB\fCalf\fR [\fB\fC
|
6
|
+
\fB\fCalf\fR [\fB\fC\-\-db=...\fR] repl
|
7
7
|
.SH Description
|
8
8
|
.PP
|
9
9
|
This command launches the REPL in the current data context defined by the
|
10
|
-
\fB\fC
|
10
|
+
\fB\fC\&.alfrc\fR file and common alf options (e.g. \fB\fC\-\-db\fR).
|
11
11
|
.SH Example
|
12
12
|
.PP
|
13
|
-
\fB\fCalf\fR \fB\fC
|
13
|
+
\fB\fCalf\fR \fB\fC\-\-db=postgres://...\fR repl
|
data/doc/man/alf-show.man
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
Evaluates a query and shows the result.
|
4
4
|
.SH Synopsis
|
5
5
|
.PP
|
6
|
-
\fB\fCalf\fR [\fB\fC
|
6
|
+
\fB\fCalf\fR [\fB\fC\-\-csv\fR|\fB\fC\-\-json\fR\&...] show \fIQUERY\fP \-\- [\fIORDERING\fP]
|
7
7
|
.SH Description
|
8
8
|
.PP
|
9
9
|
Take a query argument and execute it against the current database (according
|
@@ -13,4 +13,4 @@ output. The format (e.g. json) may be specified through \fB\fCalf\fR main option
|
|
13
13
|
When an ordering is specified, tuples are rendered in the order specified.
|
14
14
|
.SH Example
|
15
15
|
.PP
|
16
|
-
\fB\fCalf\fR \fB\fC
|
16
|
+
\fB\fCalf\fR \fB\fC\-\-examples\fR show "restrict(suppliers, city: 'London')" \-\- name DESC
|
data/doc/man/alf.man
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
Relational algebra at your fingertips
|
4
4
|
.SH Synopsis
|
5
5
|
.PP
|
6
|
-
\fB\fCalf\fR [\fB\fC
|
6
|
+
\fB\fCalf\fR [\fB\fC\-\-version\fR] [\fB\fC\-\-help\fR]
|
7
7
|
.PP
|
8
8
|
\fB\fCalf\fR \fIFILE.alf\fP
|
9
9
|
.PP
|
@@ -14,49 +14,49 @@ Relational algebra at your fingertips
|
|
14
14
|
\fB\fCalf\fR help \fIOPERATOR\fP
|
15
15
|
.SH Options
|
16
16
|
.TP
|
17
|
-
\fB\fC
|
17
|
+
\fB\fC\-\-rash\fR
|
18
18
|
Render output as ruby hashes
|
19
19
|
.TP
|
20
|
-
\fB\fC
|
20
|
+
\fB\fC\-\-text\fR
|
21
21
|
Render output as a text table
|
22
22
|
.TP
|
23
|
-
\fB\fC
|
23
|
+
\fB\fC\-\-yaml\fR
|
24
24
|
Render output in YAML
|
25
25
|
.TP
|
26
|
-
\fB\fC
|
26
|
+
\fB\fC\-\-json\fR
|
27
27
|
Render output in JSON
|
28
28
|
.TP
|
29
|
-
\fB\fC
|
29
|
+
\fB\fC\-\-csv\fR
|
30
30
|
Render output in CSV
|
31
31
|
.TP
|
32
|
-
\fB\fC
|
32
|
+
\fB\fC\-\-examples\fR
|
33
33
|
Use the suppliers and parts example database
|
34
34
|
.TP
|
35
|
-
\fB\fC
|
35
|
+
\fB\fC\-\-db=DB\fR
|
36
36
|
Set the database (adapter) to use. Recognized values can be
|
37
37
|
folders with recognized files, or an URL to a SQL database
|
38
38
|
(e.g. postgres://user:pass@host/database)
|
39
39
|
.TP
|
40
|
-
\fB\fC
|
40
|
+
\fB\fC\-\-stdin=READER\fR
|
41
41
|
Specify the kind of reader when reading on standard input
|
42
42
|
(i.e. rash, csv, json, ruby, or yaml)
|
43
43
|
.TP
|
44
|
-
\fB\fC
|
44
|
+
\fB\fC\-Idirectory\fR
|
45
45
|
Specify $LOAD_PATH directory (may be used more than once)
|
46
46
|
.TP
|
47
|
-
\fB\fC
|
47
|
+
\fB\fC\-rlibrary\fR
|
48
48
|
Require the specified ruby library, before executing alf
|
49
49
|
.TP
|
50
|
-
\fB\fC
|
50
|
+
\fB\fC\-\-ff=FORMAT\fR
|
51
51
|
Specify the floating point format
|
52
52
|
.TP
|
53
|
-
\fB\fC
|
53
|
+
\fB\fC\-\-[no\-]pretty\fR
|
54
54
|
Enable/disable pretty print best effort
|
55
55
|
.TP
|
56
|
-
\fB\fC
|
56
|
+
\fB\fC\-h\fR, \fB\fC\-\-help\fR
|
57
57
|
Show this help
|
58
58
|
.TP
|
59
|
-
\fB\fC
|
59
|
+
\fB\fC\-v\fR, \fB\fC\-\-version\fR
|
60
60
|
Show version and copyright
|
61
61
|
.SH Commands
|
62
62
|
.TP
|
data/doc/man/allbut.man
CHANGED
data/doc/man/among.man
CHANGED
data/doc/man/avg.man
CHANGED
@@ -5,7 +5,7 @@ Average
|
|
5
5
|
.PP
|
6
6
|
.RS
|
7
7
|
.nf
|
8
|
-
avg(expr: AttrName|(Tuple
|
8
|
+
avg(expr: AttrName|(Tuple\->Numeric)) \-> Aggregator
|
9
9
|
.fi
|
10
10
|
.RE
|
11
11
|
.SH Examples
|
@@ -24,7 +24,7 @@ avg{|t| t.qty * t.price }
|
|
24
24
|
.PP
|
25
25
|
.RS
|
26
26
|
.nf
|
27
|
-
avg(
|
27
|
+
avg(\->(t){ t.qty * t.price })
|
28
28
|
.fi
|
29
29
|
.RE
|
30
30
|
.SH Description
|
data/doc/man/between.man
CHANGED
data/doc/man/concat.man
CHANGED
@@ -5,7 +5,7 @@ String concatenation
|
|
5
5
|
.PP
|
6
6
|
.RS
|
7
7
|
.nf
|
8
|
-
concat(expr: AttrName|(Tuple
|
8
|
+
concat(expr: AttrName|(Tuple\->Numeric)) \-> Aggregator
|
9
9
|
.fi
|
10
10
|
.RE
|
11
11
|
.SH Examples
|
@@ -30,7 +30,7 @@ concat(between: ', '){|t| t.name }
|
|
30
30
|
.PP
|
31
31
|
.RS
|
32
32
|
.nf
|
33
|
-
concat(
|
33
|
+
concat(\->(t){ t.name.upcase }, between: ', ')
|
34
34
|
.fi
|
35
35
|
.RE
|
36
36
|
.SH Description
|
data/doc/man/contradiction.man
CHANGED
@@ -5,7 +5,7 @@ FALSE
|
|
5
5
|
.PP
|
6
6
|
.RS
|
7
7
|
.nf
|
8
|
-
contradiction()
|
8
|
+
contradiction() \-> Predicate
|
9
9
|
.fi
|
10
10
|
.RE
|
11
11
|
.SH Examples
|
@@ -23,4 +23,4 @@ contradiction
|
|
23
23
|
.RE
|
24
24
|
.SH Description
|
25
25
|
.PP
|
26
|
-
This predicate always return false. It is equivalent to \fB\fC
|
26
|
+
This predicate always return false. It is equivalent to \fB\fC\->(t){ false }\fR\&.
|
data/doc/man/count.man
CHANGED
data/doc/man/eq.man
CHANGED
@@ -5,7 +5,7 @@ Equals to
|
|
5
5
|
.PP
|
6
6
|
.RS
|
7
7
|
.nf
|
8
|
-
eq(left: Alpha|AttrName, right: Alpha|AttrName)
|
8
|
+
eq(left: Alpha|AttrName, right: Alpha|AttrName) \-> Predicate
|
9
9
|
.fi
|
10
10
|
.RE
|
11
11
|
.SH Examples
|
@@ -26,4 +26,4 @@ eq(:supplier_city, :part_city)
|
|
26
26
|
This predicates checks whether two values are equal.
|
27
27
|
.SH Implementation notes
|
28
28
|
.PP
|
29
|
-
This predicate is equivalent to \fB\fC
|
29
|
+
This predicate is equivalent to \fB\fC\->(t){ _left_ == _right_ }\fR\&.
|
data/doc/man/extend.man
CHANGED
@@ -5,7 +5,7 @@ Extends input tuples with derived/computed attributes
|
|
5
5
|
.PP
|
6
6
|
.RS
|
7
7
|
.nf
|
8
|
-
extend(operand: Relation, ext: TupleComputation)
|
8
|
+
extend(operand: Relation, ext: TupleComputation) \-> Relation
|
9
9
|
.fi
|
10
10
|
.RE
|
11
11
|
.SH Examples
|
@@ -13,8 +13,8 @@ extend(operand: Relation, ext: TupleComputation) -> Relation
|
|
13
13
|
.RS
|
14
14
|
.nf
|
15
15
|
extend(suppliers,
|
16
|
-
big:
|
17
|
-
small:
|
16
|
+
big: \->(t){ t.name.upcase },
|
17
|
+
small: \->(t){ t.name.downcase })
|
18
18
|
.fi
|
19
19
|
.RE
|
20
20
|
.SH Description
|
data/doc/man/frame.man
CHANGED
data/doc/man/group.man
CHANGED
@@ -5,7 +5,7 @@ Relation\-valued attribute
|
|
5
5
|
.PP
|
6
6
|
.RS
|
7
7
|
.nf
|
8
|
-
group(operand: Relation, attributes: AttrList, as: AttrName)
|
8
|
+
group(operand: Relation, attributes: AttrList, as: AttrName) \-> Relation
|
9
9
|
.fi
|
10
10
|
.RE
|
11
11
|
.SH Examples
|
@@ -33,7 +33,7 @@ This operator could be formally defined as the following shortcut:
|
|
33
33
|
def group(operand, attributes, as)
|
34
34
|
extend(
|
35
35
|
allbut(operand, attributes),
|
36
|
-
as:
|
36
|
+
as: \->(t){ project(matching(operand,
|
37
37
|
.BR Relation (t)),
|
38
38
|
attributes) })
|
39
39
|
end
|
data/doc/man/gt.man
CHANGED
@@ -5,7 +5,7 @@ Greater than
|
|
5
5
|
.PP
|
6
6
|
.RS
|
7
7
|
.nf
|
8
|
-
gt(left: Alpha|AttrName, right: Alpha|AttrName)
|
8
|
+
gt(left: Alpha|AttrName, right: Alpha|AttrName) \-> Predicate
|
9
9
|
.fi
|
10
10
|
.RE
|
11
11
|
.SH Examples
|
@@ -27,4 +27,4 @@ This predicates checks whether a value (\fB\fCleft\fR) is greater than another
|
|
27
27
|
one (\fB\fCright\fR).
|
28
28
|
.SH Implementation notes
|
29
29
|
.PP
|
30
|
-
This predicate is equivalent to \fB\fC
|
30
|
+
This predicate is equivalent to \fB\fC\->(t){ _left_ > _right_ }\fR\&.
|
data/doc/man/gte.man
CHANGED
@@ -5,7 +5,7 @@ Greater than or equal to
|
|
5
5
|
.PP
|
6
6
|
.RS
|
7
7
|
.nf
|
8
|
-
gte(left: Alpha|AttrName, right: Alpha|AttrName)
|
8
|
+
gte(left: Alpha|AttrName, right: Alpha|AttrName) \-> Predicate
|
9
9
|
.fi
|
10
10
|
.RE
|
11
11
|
.SH Examples
|
@@ -27,4 +27,4 @@ This predicates checks whether a value (\fB\fCleft\fR) is greater than or equal
|
|
27
27
|
to another one (\fB\fCright\fR).
|
28
28
|
.SH Implementation notes
|
29
29
|
.PP
|
30
|
-
This predicate is equivalent to \fB\fC
|
30
|
+
This predicate is equivalent to \fB\fC\->(t){ _left_ >= _right_ }\fR\&.
|
data/doc/man/image.man
CHANGED
@@ -6,7 +6,7 @@ tuple in the right relation.
|
|
6
6
|
.PP
|
7
7
|
.RS
|
8
8
|
.nf
|
9
|
-
image(left: Relation, right: Relation, as: AttrName)
|
9
|
+
image(left: Relation, right: Relation, as: AttrName) \-> Relation
|
10
10
|
.fi
|
11
11
|
.RE
|
12
12
|
.SH Examples
|
@@ -30,7 +30,7 @@ expression:
|
|
30
30
|
.RS
|
31
31
|
.nf
|
32
32
|
def image(left, right, as)
|
33
|
-
extend(left, as =>
|
33
|
+
extend(left, as => \->(t){
|
34
34
|
allbut(
|
35
35
|
matching(right,
|
36
36
|
.BR Relation (t)),
|
data/doc/man/intersect.man
CHANGED
data/doc/man/join.man
CHANGED
@@ -5,7 +5,7 @@ Natural join
|
|
5
5
|
.PP
|
6
6
|
.RS
|
7
7
|
.nf
|
8
|
-
join(left: Relation, right: Relation)
|
8
|
+
join(left: Relation, right: Relation) \-> Relation
|
9
9
|
.fi
|
10
10
|
.RE
|
11
11
|
.SH Examples
|
@@ -75,7 +75,7 @@ Alternatively, shortcuts can be considered. A (advanced) example below:
|
|
75
75
|
# before joining.
|
76
76
|
def join_on(left, right, wish)
|
77
77
|
commons = left.attr_list & right.attr_list
|
78
|
-
join(left, allbut(right, commons
|
78
|
+
join(left, allbut(right, commons \- wish))
|
79
79
|
end
|
80
80
|
# observe here how part names have been discarded to avoid joining them
|
81
81
|
# with supplier names (empty result guaranteed)
|
data/doc/man/lt.man
CHANGED
@@ -5,7 +5,7 @@ Less than
|
|
5
5
|
.PP
|
6
6
|
.RS
|
7
7
|
.nf
|
8
|
-
lt(left: Alpha|AttrName, right: Alpha|AttrName)
|
8
|
+
lt(left: Alpha|AttrName, right: Alpha|AttrName) \-> Predicate
|
9
9
|
.fi
|
10
10
|
.RE
|
11
11
|
.SH Examples
|
@@ -27,4 +27,4 @@ This predicates checks whether a value (\fB\fCleft\fR) is less than another one
|
|
27
27
|
(\fB\fCright\fR).
|
28
28
|
.SH Implementation notes
|
29
29
|
.PP
|
30
|
-
This predicate is equivalent to \fB\fC
|
30
|
+
This predicate is equivalent to \fB\fC\->(t){ _left_ < _right_ }\fR\&.
|
data/doc/man/lte.man
CHANGED
@@ -5,7 +5,7 @@ Less than or equal to
|
|
5
5
|
.PP
|
6
6
|
.RS
|
7
7
|
.nf
|
8
|
-
lte(left: Alpha|AttrName, right: Alpha|AttrName)
|
8
|
+
lte(left: Alpha|AttrName, right: Alpha|AttrName) \-> Predicate
|
9
9
|
.fi
|
10
10
|
.RE
|
11
11
|
.SH Examples
|
@@ -27,4 +27,4 @@ This predicates checks whether a value (\fB\fCleft\fR) is less than or equal to
|
|
27
27
|
another one (\fB\fCright\fR).
|
28
28
|
.SH Implementation notes
|
29
29
|
.PP
|
30
|
-
This predicate is equivalent to \fB\fC
|
30
|
+
This predicate is equivalent to \fB\fC\->(t){ _left_ <= _right_ }\fR\&.
|
data/doc/man/matching.man
CHANGED
data/doc/man/max.man
CHANGED
@@ -5,7 +5,7 @@ Maximal value
|
|
5
5
|
.PP
|
6
6
|
.RS
|
7
7
|
.nf
|
8
|
-
max(expr: AttrName|(Tuple
|
8
|
+
max(expr: AttrName|(Tuple\->Numeric)) \-> Aggregator
|
9
9
|
.fi
|
10
10
|
.RE
|
11
11
|
.SH Examples
|
@@ -24,7 +24,7 @@ max{|t| t.qty * t.price }
|
|
24
24
|
.PP
|
25
25
|
.RS
|
26
26
|
.nf
|
27
|
-
max(
|
27
|
+
max(\->(t){ t.qty * t.price })
|
28
28
|
.fi
|
29
29
|
.RE
|
30
30
|
.SH Description
|
data/doc/man/min.man
CHANGED
@@ -5,7 +5,7 @@ Minimal value
|
|
5
5
|
.PP
|
6
6
|
.RS
|
7
7
|
.nf
|
8
|
-
min(expr: AttrName|(Tuple
|
8
|
+
min(expr: AttrName|(Tuple\->Numeric)) \-> Aggregator
|
9
9
|
.fi
|
10
10
|
.RE
|
11
11
|
.SH Examples
|
@@ -24,7 +24,7 @@ min{|t| t.qty * t.price }
|
|
24
24
|
.PP
|
25
25
|
.RS
|
26
26
|
.nf
|
27
|
-
min(
|
27
|
+
min(\->(t){ t.qty * t.price })
|
28
28
|
.fi
|
29
29
|
.RE
|
30
30
|
.SH Description
|
data/doc/man/minus.man
CHANGED
data/doc/man/native.man
CHANGED
@@ -5,14 +5,14 @@ User\-defined tuple predicate
|
|
5
5
|
.PP
|
6
6
|
.RS
|
7
7
|
.nf
|
8
|
-
native(predicate: (Tuple
|
8
|
+
native(predicate: (Tuple \-> Boolean)) \-> Predicate
|
9
9
|
.fi
|
10
10
|
.RE
|
11
11
|
.SH Examples
|
12
12
|
.PP
|
13
13
|
.RS
|
14
14
|
.nf
|
15
|
-
|
15
|
+
\->(t){ t.city == 'London' }
|
16
16
|
.fi
|
17
17
|
.RE
|
18
18
|
.SH Description
|
data/doc/man/neq.man
CHANGED
@@ -5,7 +5,7 @@ Not equal to
|
|
5
5
|
.PP
|
6
6
|
.RS
|
7
7
|
.nf
|
8
|
-
neq(left: Alpha|AttrName, right: Alpha|AttrName)
|
8
|
+
neq(left: Alpha|AttrName, right: Alpha|AttrName) \-> Predicate
|
9
9
|
.fi
|
10
10
|
.RE
|
11
11
|
.SH Examples
|
@@ -26,4 +26,4 @@ neq(:supplier_city, :part_city)
|
|
26
26
|
This predicates checks whether two values are different.
|
27
27
|
.SH Implementation notes
|
28
28
|
.PP
|
29
|
-
This predicate is equivalent to \fB\fC
|
29
|
+
This predicate is equivalent to \fB\fC\->(t){ _left_ != _right_ }\fR\&.
|
data/doc/man/not_matching.man
CHANGED
data/doc/man/page.man
CHANGED
@@ -5,7 +5,7 @@ Pagination
|
|
5
5
|
.PP
|
6
6
|
.RS
|
7
7
|
.nf
|
8
|
-
page(operand: Relation, ordering: Ordering, nth: Integer)
|
8
|
+
page(operand: Relation, ordering: Ordering, nth: Integer) \-> Relation
|
9
9
|
.fi
|
10
10
|
.RE
|
11
11
|
.SH Examples
|
@@ -18,7 +18,7 @@ page(suppliers, [:status, :sid], 1, page_size: 3)
|
|
18
18
|
.PP
|
19
19
|
.RS
|
20
20
|
.nf
|
21
|
-
page(suppliers, [:status, :sid],
|
21
|
+
page(suppliers, [:status, :sid], \-1, page_size: 3)
|
22
22
|
.fi
|
23
23
|
.RE
|
24
24
|
.SH Description
|
@@ -28,7 +28,7 @@ belonging to the \fB\fCnth\fR page (starting at 1). When \fB\fCnth\fR is negativ
|
|
28
28
|
tuples that belong to the \fB\fCnth\fR page from the end (e.g., \-1 is last page).
|
29
29
|
.PP
|
30
30
|
Formally, the page is defined by those tuples whose ranking according to
|
31
|
-
\fB\fCorder\fR is such that \fB\fC(nth
|
31
|
+
\fB\fCorder\fR is such that \fB\fC(nth\-1)*page_size <= rank < nth*page_size\fR\&. In other
|
32
32
|
words, this operator is almost equivalent to the following definition
|
33
33
|
(ignoring negative page indexes for simplicity):
|
34
34
|
.PP
|
@@ -38,7 +38,7 @@ def page(operand, order, nth, page_size)
|
|
38
38
|
allbut(
|
39
39
|
restrict(
|
40
40
|
rank(operand, order, :rank),
|
41
|
-
lte((nth
|
41
|
+
lte((nth\-1)*page_size, :rank) & lt(:rank, nth*page_size)),
|
42
42
|
[:rank])
|
43
43
|
end
|
44
44
|
page(suppliers, [:status, :sid], 1, 3)
|
data/doc/man/project.man
CHANGED
data/doc/man/rank.man
CHANGED
data/doc/man/rename.man
CHANGED
data/doc/man/restrict.man
CHANGED
@@ -5,7 +5,7 @@ Predicate\-based filtering
|
|
5
5
|
.PP
|
6
6
|
.RS
|
7
7
|
.nf
|
8
|
-
restrict(operand: Relation, predicate: Predicate)
|
8
|
+
restrict(operand: Relation, predicate: Predicate) \-> Relation
|
9
9
|
.fi
|
10
10
|
.RE
|
11
11
|
.SH Examples
|
@@ -24,7 +24,7 @@ restrict(suppliers, eq(city: 'Paris') & gt(:status, 20))
|
|
24
24
|
.PP
|
25
25
|
.RS
|
26
26
|
.nf
|
27
|
-
restrict(suppliers,
|
27
|
+
restrict(suppliers, \->(t){ t.city == 'Paris' and t.status > 20 })
|
28
28
|
.fi
|
29
29
|
.RE
|
30
30
|
.SH Description
|
data/doc/man/stddev.man
CHANGED
@@ -5,7 +5,7 @@ Standard deviation
|
|
5
5
|
.PP
|
6
6
|
.RS
|
7
7
|
.nf
|
8
|
-
stddev(expr: AttrName|(Tuple
|
8
|
+
stddev(expr: AttrName|(Tuple\->Numeric)) \-> Aggregator
|
9
9
|
.fi
|
10
10
|
.RE
|
11
11
|
.SH Examples
|
@@ -24,7 +24,7 @@ stddev{|t| t.qty * t.price }
|
|
24
24
|
.PP
|
25
25
|
.RS
|
26
26
|
.nf
|
27
|
-
stddev(
|
27
|
+
stddev(\->(t){ t.qty * t.price })
|
28
28
|
.fi
|
29
29
|
.RE
|
30
30
|
.SH Description
|
data/doc/man/sum.man
CHANGED
@@ -5,7 +5,7 @@ Arithmetic sum
|
|
5
5
|
.PP
|
6
6
|
.RS
|
7
7
|
.nf
|
8
|
-
sum(expr: AttrName|(Tuple
|
8
|
+
sum(expr: AttrName|(Tuple\->Numeric)) \-> Aggregator
|
9
9
|
.fi
|
10
10
|
.RE
|
11
11
|
.SH Examples
|
@@ -24,7 +24,7 @@ sum{|t| t.qty * t.price }
|
|
24
24
|
.PP
|
25
25
|
.RS
|
26
26
|
.nf
|
27
|
-
sum(
|
27
|
+
sum(\->(t){ t.qty * t.price })
|
28
28
|
.fi
|
29
29
|
.RE
|
30
30
|
.SH Description
|
data/doc/man/summarize.man
CHANGED
data/doc/man/tautology.man
CHANGED
@@ -5,7 +5,7 @@ TRUE
|
|
5
5
|
.PP
|
6
6
|
.RS
|
7
7
|
.nf
|
8
|
-
tautology()
|
8
|
+
tautology() \-> Predicate
|
9
9
|
.fi
|
10
10
|
.RE
|
11
11
|
.SH Examples
|
@@ -23,4 +23,4 @@ tautology
|
|
23
23
|
.RE
|
24
24
|
.SH Description
|
25
25
|
.PP
|
26
|
-
This predicate always return true. It is equivalent to \fB\fC
|
26
|
+
This predicate always return true. It is equivalent to \fB\fC\->(t){ true }\fR\&.
|
data/doc/man/ungroup.man
CHANGED
data/doc/man/union.man
CHANGED
data/doc/man/unwrap.man
CHANGED
@@ -5,7 +5,7 @@ Inverse of wrap
|
|
5
5
|
.PP
|
6
6
|
.RS
|
7
7
|
.nf
|
8
|
-
unwrap(operand: Relation, tva: AttrName)
|
8
|
+
unwrap(operand: Relation, tva: AttrName) \-> Relation
|
9
9
|
.fi
|
10
10
|
.RE
|
11
11
|
.SH Examples
|
@@ -23,7 +23,7 @@ Unwrapping of \fB\fCtva\fR on an input tuple \fB\fCt\fR consists in removing \fB
|
|
23
23
|
.PP
|
24
24
|
.RS
|
25
25
|
.nf
|
26
|
-
Tuple(x: 1, tva: Tuple(y: 2, z: 3))
|
26
|
+
Tuple(x: 1, tva: Tuple(y: 2, z: 3)) \-> Tuple(x: 1, y: 2, z: 3)
|
27
27
|
.fi
|
28
28
|
.RE
|
29
29
|
.PP
|
data/doc/man/variance.man
CHANGED
@@ -5,7 +5,7 @@ Variance
|
|
5
5
|
.PP
|
6
6
|
.RS
|
7
7
|
.nf
|
8
|
-
variance(expr: AttrName|(Tuple
|
8
|
+
variance(expr: AttrName|(Tuple\->Numeric)) \-> Aggregator
|
9
9
|
.fi
|
10
10
|
.RE
|
11
11
|
.SH Examples
|
@@ -24,7 +24,7 @@ variance{|t| t.qty * t.price }
|
|
24
24
|
.PP
|
25
25
|
.RS
|
26
26
|
.nf
|
27
|
-
variance(
|
27
|
+
variance(\->(t){ t.qty * t.price })
|
28
28
|
.fi
|
29
29
|
.RE
|
30
30
|
.SH Description
|
data/doc/man/wrap.man
CHANGED
data/lib/alf/shell/version.rb
CHANGED
metadata
CHANGED
@@ -1,112 +1,99 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alf-shell
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.16.
|
5
|
-
prerelease:
|
4
|
+
version: 0.16.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Bernard Lambeau
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2014-
|
11
|
+
date: 2014-04-30 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rake
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- - ~>
|
17
|
+
- - "~>"
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '10.1'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- - ~>
|
24
|
+
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '10.1'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rspec
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- - ~>
|
31
|
+
- - "~>"
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '2.14'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- - ~>
|
38
|
+
- - "~>"
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '2.14'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: alf-doc
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
45
|
- - '='
|
52
46
|
- !ruby/object:Gem::Version
|
53
|
-
version: 0.16.
|
47
|
+
version: 0.16.1
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
52
|
- - '='
|
60
53
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.16.
|
54
|
+
version: 0.16.1
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: quickl
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- - ~>
|
59
|
+
- - "~>"
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: 0.4.3
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- - ~>
|
66
|
+
- - "~>"
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: 0.4.3
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: highline
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- - ~>
|
73
|
+
- - "~>"
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '1.6'
|
86
76
|
type: :runtime
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- - ~>
|
80
|
+
- - "~>"
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '1.6'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: alf-core
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
87
|
- - '='
|
100
88
|
- !ruby/object:Gem::Version
|
101
|
-
version: 0.16.
|
89
|
+
version: 0.16.1
|
102
90
|
type: :runtime
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
94
|
- - '='
|
108
95
|
- !ruby/object:Gem::Version
|
109
|
-
version: 0.16.
|
96
|
+
version: 0.16.1
|
110
97
|
description: This project implements the `alf` commandline tool.
|
111
98
|
email:
|
112
99
|
- blambeau at gmail.com
|
@@ -118,6 +105,10 @@ files:
|
|
118
105
|
- CHANGELOG.md
|
119
106
|
- Gemfile
|
120
107
|
- Gemfile.lock
|
108
|
+
- LICENCE.md
|
109
|
+
- Manifest.txt
|
110
|
+
- README.md
|
111
|
+
- Rakefile
|
121
112
|
- bin/alf
|
122
113
|
- doc/man/alf-explain.man
|
123
114
|
- doc/man/alf-metadata.man
|
@@ -207,23 +198,19 @@ files:
|
|
207
198
|
- doc/txt/unwrap.txt
|
208
199
|
- doc/txt/variance.txt
|
209
200
|
- doc/txt/wrap.txt
|
201
|
+
- lib/alf-shell.rb
|
202
|
+
- lib/alf/shell.rb
|
210
203
|
- lib/alf/shell/alfrc.rb
|
204
|
+
- lib/alf/shell/command.rb
|
211
205
|
- lib/alf/shell/command/explain.rb
|
212
206
|
- lib/alf/shell/command/help.rb
|
213
207
|
- lib/alf/shell/command/main.rb
|
214
208
|
- lib/alf/shell/command/metadata.rb
|
215
209
|
- lib/alf/shell/command/repl.rb
|
216
210
|
- lib/alf/shell/command/show.rb
|
217
|
-
- lib/alf/shell/command.rb
|
218
211
|
- lib/alf/shell/loader.rb
|
219
212
|
- lib/alf/shell/support.rb
|
220
213
|
- lib/alf/shell/version.rb
|
221
|
-
- lib/alf/shell.rb
|
222
|
-
- lib/alf-shell.rb
|
223
|
-
- LICENCE.md
|
224
|
-
- Manifest.txt
|
225
|
-
- Rakefile
|
226
|
-
- README.md
|
227
214
|
- spec/fixtures/example.alfrc
|
228
215
|
- spec/integration/__database__/parts.rash
|
229
216
|
- spec/integration/__database__/suppliers.rash
|
@@ -270,32 +257,25 @@ files:
|
|
270
257
|
- tasks/test.rake
|
271
258
|
homepage: http://github.com/alf-tool/alf-shell
|
272
259
|
licenses: []
|
260
|
+
metadata: {}
|
273
261
|
post_install_message:
|
274
262
|
rdoc_options: []
|
275
263
|
require_paths:
|
276
264
|
- lib
|
277
265
|
required_ruby_version: !ruby/object:Gem::Requirement
|
278
|
-
none: false
|
279
266
|
requirements:
|
280
|
-
- -
|
267
|
+
- - ">="
|
281
268
|
- !ruby/object:Gem::Version
|
282
269
|
version: '0'
|
283
|
-
segments:
|
284
|
-
- 0
|
285
|
-
hash: -1823649938307432080
|
286
270
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
287
|
-
none: false
|
288
271
|
requirements:
|
289
|
-
- -
|
272
|
+
- - ">="
|
290
273
|
- !ruby/object:Gem::Version
|
291
274
|
version: '0'
|
292
|
-
segments:
|
293
|
-
- 0
|
294
|
-
hash: -1823649938307432080
|
295
275
|
requirements: []
|
296
276
|
rubyforge_project:
|
297
|
-
rubygems_version:
|
277
|
+
rubygems_version: 2.2.2
|
298
278
|
signing_key:
|
299
|
-
specification_version:
|
279
|
+
specification_version: 4
|
300
280
|
summary: Bring Alf's relational algebra to the shell
|
301
281
|
test_files: []
|