alf-shell 0.14.0 → 0.15.0

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 (276) hide show
  1. data/Gemfile +5 -2
  2. data/Gemfile.lock +29 -10
  3. data/bin/alf +2 -0
  4. data/doc/man/alf-explain.man +22 -0
  5. data/doc/man/alf-metadata.man +13 -0
  6. data/doc/man/alf-show.man +16 -0
  7. data/doc/man/alf.man +77 -0
  8. data/doc/man/allbut.man +39 -0
  9. data/doc/man/among.man +25 -0
  10. data/doc/man/avg.man +37 -0
  11. data/doc/man/between.man +24 -0
  12. data/doc/man/concat.man +55 -0
  13. data/doc/man/contradiction.man +26 -0
  14. data/doc/man/count.man +20 -0
  15. data/doc/man/eq.man +29 -0
  16. data/doc/man/extend.man +33 -0
  17. data/doc/man/frame.man +60 -0
  18. data/doc/man/group.man +51 -0
  19. data/doc/man/gt.man +30 -0
  20. data/doc/man/gte.man +30 -0
  21. data/doc/man/intersect.man +54 -0
  22. data/doc/man/join.man +84 -0
  23. data/doc/man/lt.man +30 -0
  24. data/doc/man/lte.man +30 -0
  25. data/doc/man/matching.man +73 -0
  26. data/doc/man/max.man +36 -0
  27. data/doc/man/min.man +36 -0
  28. data/doc/man/minus.man +54 -0
  29. data/doc/man/native.man +32 -0
  30. data/doc/man/neq.man +29 -0
  31. data/doc/man/not_matching.man +51 -0
  32. data/doc/man/page.man +60 -0
  33. data/doc/man/project.man +36 -0
  34. data/doc/man/rank.man +42 -0
  35. data/doc/man/rename.man +29 -0
  36. data/doc/man/restrict.man +38 -0
  37. data/doc/man/stddev.man +37 -0
  38. data/doc/man/sum.man +37 -0
  39. data/doc/man/summarize.man +45 -0
  40. data/doc/man/tautology.man +26 -0
  41. data/doc/man/ungroup.man +30 -0
  42. data/doc/man/union.man +55 -0
  43. data/doc/man/unwrap.man +37 -0
  44. data/doc/man/variance.man +37 -0
  45. data/doc/man/wrap.man +37 -0
  46. data/doc/txt/alf-explain.man +22 -0
  47. data/doc/txt/alf-metadata.man +16 -0
  48. data/doc/txt/alf-show.man +19 -0
  49. data/doc/txt/alf.man +80 -0
  50. data/doc/txt/allbut.txt +31 -0
  51. data/doc/txt/among.txt +20 -0
  52. data/doc/txt/avg.txt +22 -0
  53. data/doc/txt/between.txt +19 -0
  54. data/doc/txt/concat.txt +31 -0
  55. data/doc/txt/contradiction.txt +15 -0
  56. data/doc/txt/count.txt +14 -0
  57. data/doc/txt/eq.txt +19 -0
  58. data/doc/txt/extend.txt +29 -0
  59. data/doc/txt/frame.txt +48 -0
  60. data/doc/txt/group.txt +37 -0
  61. data/doc/txt/gt.txt +20 -0
  62. data/doc/txt/gte.txt +20 -0
  63. data/doc/txt/intersect.txt +42 -0
  64. data/doc/txt/join.txt +65 -0
  65. data/doc/txt/lt.txt +20 -0
  66. data/doc/txt/lte.txt +20 -0
  67. data/doc/txt/matching.txt +54 -0
  68. data/doc/txt/max.txt +21 -0
  69. data/doc/txt/min.txt +21 -0
  70. data/doc/txt/minus.txt +42 -0
  71. data/doc/txt/native.txt +27 -0
  72. data/doc/txt/neq.txt +19 -0
  73. data/doc/txt/not_matching.txt +39 -0
  74. data/doc/txt/page.txt +48 -0
  75. data/doc/txt/project.txt +28 -0
  76. data/doc/txt/rank.txt +34 -0
  77. data/doc/txt/rename.txt +25 -0
  78. data/doc/txt/restrict.txt +26 -0
  79. data/doc/txt/stddev.txt +22 -0
  80. data/doc/txt/sum.txt +22 -0
  81. data/doc/txt/summarize.txt +33 -0
  82. data/doc/txt/tautology.txt +15 -0
  83. data/doc/txt/ungroup.txt +26 -0
  84. data/doc/txt/union.txt +43 -0
  85. data/doc/txt/unwrap.txt +29 -0
  86. data/doc/txt/variance.txt +22 -0
  87. data/doc/txt/wrap.txt +29 -0
  88. data/lib/alf/shell.rb +2 -32
  89. data/lib/alf/shell/alfrc.rb +3 -0
  90. data/lib/alf/shell/command.rb +2 -18
  91. data/lib/alf/shell/command/explain.rb +37 -0
  92. data/lib/alf/shell/command/help.rb +3 -21
  93. data/lib/alf/shell/command/main.rb +20 -78
  94. data/lib/alf/shell/command/metadata.rb +32 -0
  95. data/lib/alf/shell/command/show.rb +17 -5
  96. data/lib/alf/shell/support.rb +21 -13
  97. data/lib/alf/shell/version.rb +1 -1
  98. data/spec/integration/explain/explain.cmd +1 -0
  99. data/spec/integration/explain/explain.stdout +11 -0
  100. data/spec/integration/show/group.alf +2 -0
  101. data/spec/integration/show/show_alf.cmd +1 -0
  102. data/spec/integration/{group/group_0.stdout → show/show_alf.stdout} +0 -0
  103. data/tasks/doc.rake +4 -0
  104. metadata +116 -178
  105. data/doc/commands/exec.md +0 -16
  106. data/doc/commands/help.md +0 -11
  107. data/doc/commands/main.md +0 -33
  108. data/doc/commands/show.md +0 -12
  109. data/doc/operators/non_relational/autonum.md +0 -23
  110. data/doc/operators/non_relational/clip.md +0 -31
  111. data/doc/operators/non_relational/coerce.md +0 -15
  112. data/doc/operators/non_relational/compact.md +0 -20
  113. data/doc/operators/non_relational/defaults.md +0 -32
  114. data/doc/operators/non_relational/generator.md +0 -20
  115. data/doc/operators/non_relational/sort.md +0 -24
  116. data/doc/operators/non_relational/type-safe.md +0 -20
  117. data/doc/operators/relational/extend.md +0 -18
  118. data/doc/operators/relational/frame.md +0 -26
  119. data/doc/operators/relational/group.md +0 -27
  120. data/doc/operators/relational/hierarchize.md +0 -14
  121. data/doc/operators/relational/infer-heading.md +0 -20
  122. data/doc/operators/relational/intersect.md +0 -13
  123. data/doc/operators/relational/join.md +0 -28
  124. data/doc/operators/relational/matching.md +0 -24
  125. data/doc/operators/relational/minus.md +0 -12
  126. data/doc/operators/relational/not-matching.md +0 -20
  127. data/doc/operators/relational/page.md +0 -31
  128. data/doc/operators/relational/project.md +0 -28
  129. data/doc/operators/relational/quota.md +0 -21
  130. data/doc/operators/relational/rank.md +0 -27
  131. data/doc/operators/relational/rename.md +0 -17
  132. data/doc/operators/relational/restrict.md +0 -25
  133. data/doc/operators/relational/summarize.md +0 -25
  134. data/doc/operators/relational/ungroup.md +0 -20
  135. data/doc/operators/relational/union.md +0 -14
  136. data/doc/operators/relational/unwrap.md +0 -20
  137. data/doc/operators/relational/wrap.md +0 -24
  138. data/lib/alf/shell/command/exec.rb +0 -16
  139. data/lib/alf/shell/doc_manager.rb +0 -84
  140. data/lib/alf/shell/ext/signature.rb +0 -45
  141. data/lib/alf/shell/from_argv.rb +0 -84
  142. data/lib/alf/shell/operator.rb +0 -63
  143. data/spec/integration/__database__/group.alf +0 -3
  144. data/spec/integration/alf/alf_e.cmd +0 -1
  145. data/spec/integration/alf/alf_e.stdout +0 -4
  146. data/spec/integration/alf/alf_help.cmd +0 -1
  147. data/spec/integration/alf/alf_help.stdout +0 -76
  148. data/spec/integration/alf/alf_r.cmd +0 -1
  149. data/spec/integration/alf/alf_r.stdout +0 -5
  150. data/spec/integration/autonum/autonum_0.cmd +0 -1
  151. data/spec/integration/autonum/autonum_0.stdout +0 -9
  152. data/spec/integration/autonum/autonum_1.cmd +0 -1
  153. data/spec/integration/autonum/autonum_1.stdout +0 -9
  154. data/spec/integration/clip/clip_0.cmd +0 -1
  155. data/spec/integration/clip/clip_0.stdout +0 -9
  156. data/spec/integration/clip/clip_1.cmd +0 -1
  157. data/spec/integration/clip/clip_1.stdout +0 -9
  158. data/spec/integration/coerce/coerce_1.cmd +0 -1
  159. data/spec/integration/coerce/coerce_1.stdout +0 -5
  160. data/spec/integration/compact/compact_0.cmd +0 -1
  161. data/spec/integration/compact/compact_0.stdout +0 -9
  162. data/spec/integration/defaults/defaults_0.cmd +0 -1
  163. data/spec/integration/defaults/defaults_0.stdout +0 -9
  164. data/spec/integration/defaults/defaults_1.cmd +0 -1
  165. data/spec/integration/defaults/defaults_1.stdout +0 -9
  166. data/spec/integration/defaults/defaults_2.cmd +0 -1
  167. data/spec/integration/defaults/defaults_2.stdout +0 -9
  168. data/spec/integration/extend/extend_0.cmd +0 -1
  169. data/spec/integration/extend/extend_0.stdout +0 -16
  170. data/spec/integration/frame/frame_0.cmd +0 -1
  171. data/spec/integration/frame/frame_0.stdout +0 -6
  172. data/spec/integration/generator/generator_1.cmd +0 -1
  173. data/spec/integration/generator/generator_1.stdout +0 -10
  174. data/spec/integration/generator/generator_2.cmd +0 -1
  175. data/spec/integration/generator/generator_2.stdout +0 -5
  176. data/spec/integration/generator/generator_3.cmd +0 -1
  177. data/spec/integration/generator/generator_3.stdout +0 -5
  178. data/spec/integration/group/group_0.cmd +0 -1
  179. data/spec/integration/group/group_1.cmd +0 -1
  180. data/spec/integration/group/group_1.stdout +0 -32
  181. data/spec/integration/help/help_1.cmd +0 -1
  182. data/spec/integration/help/help_1.stdout +0 -12
  183. data/spec/integration/intersect/intersect_0.cmd +0 -1
  184. data/spec/integration/intersect/intersect_0.stdout +0 -9
  185. data/spec/integration/join/join_0.cmd +0 -1
  186. data/spec/integration/join/join_0.stdout +0 -16
  187. data/spec/integration/matching/matching_0.cmd +0 -1
  188. data/spec/integration/matching/matching_0.stdout +0 -8
  189. data/spec/integration/minus/minus_0.cmd +0 -1
  190. data/spec/integration/minus/minus_0.stdout +0 -4
  191. data/spec/integration/not-matching/not-matching_0.cmd +0 -1
  192. data/spec/integration/not-matching/not-matching_0.stdout +0 -5
  193. data/spec/integration/page/page_0.cmd +0 -1
  194. data/spec/integration/page/page_0.stdout +0 -6
  195. data/spec/integration/project/project_0.cmd +0 -1
  196. data/spec/integration/project/project_0.stdout +0 -9
  197. data/spec/integration/project/project_1.cmd +0 -1
  198. data/spec/integration/project/project_1.stdout +0 -9
  199. data/spec/integration/quota/quota_0.cmd +0 -1
  200. data/spec/integration/quota/quota_0.stdout +0 -16
  201. data/spec/integration/rank/rank_1.cmd +0 -1
  202. data/spec/integration/rank/rank_1.stdout +0 -10
  203. data/spec/integration/rank/rank_2.cmd +0 -1
  204. data/spec/integration/rank/rank_2.stdout +0 -10
  205. data/spec/integration/rank/rank_3.cmd +0 -1
  206. data/spec/integration/rank/rank_3.stdout +0 -10
  207. data/spec/integration/rank/rank_4.cmd +0 -1
  208. data/spec/integration/rank/rank_4.stdout +0 -6
  209. data/spec/integration/rank/rank_5.cmd +0 -1
  210. data/spec/integration/rank/rank_5.stdout +0 -6
  211. data/spec/integration/rename/rename_0.cmd +0 -1
  212. data/spec/integration/rename/rename_0.stdout +0 -9
  213. data/spec/integration/restrict/restrict_0.cmd +0 -1
  214. data/spec/integration/restrict/restrict_0.stdout +0 -6
  215. data/spec/integration/restrict/restrict_1.cmd +0 -1
  216. data/spec/integration/restrict/restrict_1.stdout +0 -6
  217. data/spec/integration/sort/sort_0.cmd +0 -1
  218. data/spec/integration/sort/sort_0.stdout +0 -9
  219. data/spec/integration/sort/sort_1.cmd +0 -1
  220. data/spec/integration/sort/sort_1.stdout +0 -9
  221. data/spec/integration/sort/sort_2.cmd +0 -1
  222. data/spec/integration/sort/sort_2.stdout +0 -9
  223. data/spec/integration/sort/sort_3.cmd +0 -1
  224. data/spec/integration/sort/sort_3.stdout +0 -9
  225. data/spec/integration/summarize/summarize_0.cmd +0 -1
  226. data/spec/integration/summarize/summarize_0.stdout +0 -8
  227. data/spec/integration/union/union_0.cmd +0 -1
  228. data/spec/integration/union/union_0.stdout +0 -9
  229. data/spec/integration/unwrap/unwrap_0.cmd +0 -1
  230. data/spec/integration/unwrap/unwrap_0.stdout +0 -9
  231. data/spec/integration/wrap/wrap_0.cmd +0 -1
  232. data/spec/integration/wrap/wrap_0.stdout +0 -9
  233. data/spec/unit/doc_manager/dynamic.md +0 -1
  234. data/spec/unit/doc_manager/example.md +0 -1
  235. data/spec/unit/doc_manager/example_1.txt +0 -11
  236. data/spec/unit/doc_manager/static.md +0 -1
  237. data/spec/unit/doc_manager/test_call.rb +0 -41
  238. data/spec/unit/ext/signature/test_argv2args.rb +0 -82
  239. data/spec/unit/ext/signature/test_to_shell.rb +0 -103
  240. data/spec/unit/from_argv/test_to_attr_list.rb +0 -30
  241. data/spec/unit/from_argv/test_to_attr_name.rb +0 -27
  242. data/spec/unit/from_argv/test_to_boolean.rb +0 -32
  243. data/spec/unit/from_argv/test_to_heading.rb +0 -37
  244. data/spec/unit/from_argv/test_to_ordering.rb +0 -28
  245. data/spec/unit/from_argv/test_to_predicate.rb +0 -26
  246. data/spec/unit/from_argv/test_to_renaming.rb +0 -23
  247. data/spec/unit/from_argv/test_to_size.rb +0 -32
  248. data/spec/unit/from_argv/test_to_summarization.rb +0 -19
  249. data/spec/unit/from_argv/test_to_tuple_computation.rb +0 -18
  250. data/spec/unit/from_argv/test_to_tuple_expression.rb +0 -38
  251. data/spec/unit/main/test_class_methods.rb +0 -44
  252. data/spec/unit/operator/test_autonum.rb +0 -28
  253. data/spec/unit/operator/test_clip.rb +0 -29
  254. data/spec/unit/operator/test_coerce.rb +0 -22
  255. data/spec/unit/operator/test_compact.rb +0 -16
  256. data/spec/unit/operator/test_defaults.rb +0 -29
  257. data/spec/unit/operator/test_extend.rb +0 -21
  258. data/spec/unit/operator/test_generator.rb +0 -37
  259. data/spec/unit/operator/test_group.rb +0 -32
  260. data/spec/unit/operator/test_infer_heading.rb +0 -16
  261. data/spec/unit/operator/test_intersect.rb +0 -18
  262. data/spec/unit/operator/test_join.rb +0 -18
  263. data/spec/unit/operator/test_matching.rb +0 -18
  264. data/spec/unit/operator/test_minus.rb +0 -18
  265. data/spec/unit/operator/test_not_matching.rb +0 -18
  266. data/spec/unit/operator/test_project.rb +0 -38
  267. data/spec/unit/operator/test_quota.rb +0 -23
  268. data/spec/unit/operator/test_rank.rb +0 -30
  269. data/spec/unit/operator/test_rename.rb +0 -21
  270. data/spec/unit/operator/test_restrict.rb +0 -36
  271. data/spec/unit/operator/test_sort.rb +0 -49
  272. data/spec/unit/operator/test_summarize.rb +0 -30
  273. data/spec/unit/operator/test_ungroup.rb +0 -28
  274. data/spec/unit/operator/test_union.rb +0 -18
  275. data/spec/unit/operator/test_unwrap.rb +0 -28
  276. data/spec/unit/operator/test_wrap.rb +0 -30
@@ -1,16 +0,0 @@
1
-
2
- Executes an .alf file on current database
3
-
4
- SYNOPSIS
5
-
6
- alf #(command_name) [FILE]
7
-
8
- OPTIONS
9
-
10
- #(summarized_options)
11
-
12
- DESCRIPTION
13
-
14
- This command executes the .alf file passed as first argument (or what comes
15
- on standard input) as a alf query to be executed on the current database.
16
-
@@ -1,11 +0,0 @@
1
-
2
- Show help about a specific command
3
-
4
- SYNOPSIS
5
-
6
- alf #(command_name) COMMAND
7
-
8
- OPTIONS
9
-
10
- #(summarized_options)
11
-
@@ -1,33 +0,0 @@
1
-
2
- alf - Relational algebra at your fingertips
3
-
4
- SYNOPSIS
5
-
6
- alf [--version] [--help]
7
- alf -e '(lispy command)'
8
- alf [FILE.alf]
9
- alf [alf opts] OPERATOR [operator opts] ARGS ...
10
- alf help OPERATOR
11
-
12
- OPTIONS
13
-
14
- #(summarized_options)
15
-
16
- RELATIONAL OPERATORS
17
-
18
- #(summarized_subcommands relational_operators)
19
-
20
- EXPERIMENTAL RELATIONAL OPERATORS
21
-
22
- #(summarized_subcommands experimental_operators)
23
-
24
- NON-RELATIONAL OPERATORS
25
-
26
- #(summarized_subcommands non_relational_operators)
27
-
28
- OTHER NON-RELATIONAL COMMANDS
29
-
30
- #(summarized_subcommands other_non_relational_commands)
31
-
32
- See 'alf help COMMAND' for details about a specific command.
33
-
@@ -1,12 +0,0 @@
1
-
2
- Output input tuples through the default renderer in a specific order.
3
-
4
- SYNOPSIS
5
-
6
- alf #(command_name) NAME -- [ORDERING]
7
-
8
- DESCRIPTION
9
-
10
- When a name is specified as commandline arg, request the database to
11
- provide the corresponding relation variable and prints its value.
12
- Otherwise, take what comes on standard input.
@@ -1,23 +0,0 @@
1
-
2
- Extend its operand with an unique autonumber attribute
3
-
4
- SYNOPSIS
5
-
6
- #(signature)
7
-
8
- DESCRIPTION
9
-
10
- This non-relational operator guarantees uniqueness of output tuples by adding
11
- an attribute called AS whose value is an auto-numbered Integer.
12
-
13
- If the presence of duplicates was the only "non-relational" aspect of the input,
14
- the result is a valid relation for which AS is a candidate key.
15
-
16
- EXAMPLE
17
-
18
- # Autonumber suppliers with default attribute name
19
- !(alf autonum suppliers)
20
-
21
- # Autonumber suppliers with a `unique_id` attribute
22
- !(alf autonum suppliers -- unique_id)
23
-
@@ -1,31 +0,0 @@
1
-
2
- Clip input tuples to a subset of attributes
3
-
4
- SYNOPSIS
5
-
6
- #(signature)
7
-
8
- OPTIONS
9
-
10
- #(summarized_options)
11
-
12
- DESCRIPTION
13
-
14
- This operator clips tuples on attributes whose names are specified in
15
- ATTRIBUTES. This is similar to the relational PROJECT operator, expect
16
- that CLIP does not remove duplicates afterwards.
17
-
18
- Clipping may therefore lead to bags of tuples instead of sets. The result
19
- is therefore **not** a valid relation unless a candidate key is preserved.
20
-
21
- With the allbut option, the operator keeps attributes in ATTRIBUTES, instead
22
- of projecting them away.
23
-
24
- EXAMPLE
25
-
26
- # Clip suppliers on `name` and `city`
27
- !(alf clip suppliers -- name city)
28
-
29
- # Clip suppliers on all other attributes
30
- !(alf clip suppliers --allbut -- name city)
31
-
@@ -1,15 +0,0 @@
1
-
2
- Force attribute coercion according to a heading
3
-
4
- SYNOPSIS
5
-
6
- #(signature)
7
-
8
- DESCRIPTION
9
-
10
- This operator coerces attributes of the input tuples according to HEADING.
11
-
12
- EXAMPLE
13
-
14
- alf coerce parts -- weight Float color Color
15
-
@@ -1,20 +0,0 @@
1
-
2
- Remove tuple duplicates
3
-
4
- SYNOPSIS
5
-
6
- #(signature)
7
-
8
- DESCRIPTION
9
-
10
- This non-relational operator removes duplicates from its input operand.
11
- In other words, it converts a bag of tuples to a set of tuples in a
12
- brute-force manner.
13
-
14
- If the presence of duplicates was the only "non-relational" aspect of
15
- the operand, the result is a valid relation.
16
-
17
- EXAMPLE
18
-
19
- alf compact suppliers
20
-
@@ -1,32 +0,0 @@
1
-
2
- Force default values on missing/nil attributes
3
-
4
- SYNOPSIS
5
-
6
- #(signature)
7
-
8
- OPTIONS
9
-
10
- #(summarized_options)
11
-
12
- DESCRIPTION
13
-
14
- This non-relational operator rewrites input tuples to ensure that all values
15
- for attribute names specified in DEFAULTS are present and not nil. Missing or
16
- nil attributes are replaced by the specified default value.
17
-
18
- A value specified in DEFAULTS may be any tuple expression. This allows computing
19
- the default value as an expression on the current tuple.
20
-
21
- With the strict option, the operator projects resulting tuples on attributes for
22
- which a default value has been specified. Using the strict mode guarantees that
23
- the heading of all tuples is the same, and that no nil value ever remains.
24
-
25
- Note that this operator never removes duplicates. Even in strict mode the result
26
- might be an invalid relation.
27
-
28
- EXAMPLE
29
-
30
- alf defaults suppliers -- country "'Belgium'"
31
- alf defaults --strict suppliers -- country "'Belgium'"
32
-
@@ -1,20 +0,0 @@
1
-
2
- Generate a relation with an auto-numbered attribute
3
-
4
- SYNOPSIS
5
-
6
- #(signature)
7
-
8
- DESCRIPTION
9
-
10
- This non-relational operator generates a relation of one attribute called AS,
11
- whose value is an auto-number ranging from 1 to SIZE, inclusively.
12
-
13
- EXAMPLE
14
-
15
- # Default behavior: AS is `num` and SIZE is 10
16
- !(alf generator)
17
-
18
- # That you can override
19
- !(alf generator -- 5 -- id)
20
-
@@ -1,24 +0,0 @@
1
-
2
- Sort input tuples according to an order relation
3
-
4
- SYNOPSIS
5
-
6
- #(signature)
7
-
8
- DESCRIPTION
9
-
10
- This non-relational operator sorts input tuples according to ORDERING.
11
-
12
- This is, of course, a non relational operator as relations are unordered
13
- sets. It is provided for displaying purposes and normalization of
14
- non-relational inputs.
15
-
16
- EXAMPLE
17
-
18
- # Sort suppliers by name
19
- !(alf sort suppliers -- name asc)
20
-
21
- # Sort suppliers by city in descending order, then on name on ascending
22
- # order
23
- !(alf sort suppliers -- city desc name asc)
24
-
@@ -1,20 +0,0 @@
1
-
2
- Check that input tuples are of a specified heading
3
-
4
- SYNOPSIS
5
-
6
- #(signature)
7
-
8
- DESCRIPTION
9
-
10
- This non-relational ensures that input tuples match a given heading (in strict mode),
11
- or a projection (in non-strict mode). This is useful when connecting to data-sources whose
12
- relation representations must absolutely be checked for type safety.
13
-
14
- EXAMPLE
15
-
16
- # Check that the suppliers have the correct heading (since is missing, but ok)
17
- !(alf type-safe suppliers -- sid String name String status Integer city String since Date)
18
-
19
- # Strict, no attribute can be missing
20
- !(alf type-safe --strict suppliers -- sid String name String status Integer city String)
@@ -1,18 +0,0 @@
1
-
2
- Relational extension (additional, computed attributes)
3
-
4
- SYNOPSIS
5
-
6
- #(signature)
7
-
8
- DESCRIPTION
9
-
10
- This operator extends its operand with new attributes whose value is the result
11
- of evaluating tuple expressions specified in EXT. The latter are specified as
12
- (name, expression) pairs.
13
-
14
- EXAMPLE
15
-
16
- # Compute a few attributes on suppliers by extension
17
- !(alf extend supplies -- big "qty > 100" price "qty * 12.2")
18
-
@@ -1,26 +0,0 @@
1
-
2
- Relational framing (aka offset/limit, yet sounder)
3
-
4
- SYNOPSIS
5
-
6
- #(signature)
7
-
8
- DESCRIPTION
9
-
10
- This command provides the classical offset/limit over the input relation.
11
-
12
- This operator skips tuples whose ranking according to `ordering` is between
13
- `0` and `offset` exclusive (in other words, it skips `offset` tuples). In
14
- addition, it returns maximum `limit` tuples.
15
-
16
- To be sound, this operator requires the ordering to include a candidate key
17
- for the input relation. Alf will automatically extend the ordering you provide
18
- to guarantee this, provided key inference is possible.
19
-
20
- EXAMPLE
21
-
22
- # Take the first two suppliers ordered by name (then by id)
23
- !(alf frame suppliers -- name -- 0 -- 2)
24
-
25
- # Take the next two suppliers
26
- !(alf frame suppliers -- name -- 2 -- 2)
@@ -1,27 +0,0 @@
1
-
2
- Relational grouping (relation-valued attributes)
3
-
4
- SYNOPSIS
5
-
6
- #(signature)
7
-
8
- OPTIONS
9
-
10
- #(summarized_options)
11
-
12
- DESCRIPTION
13
-
14
- This operator groups attributes in ATTRIBUTES as a new, relation-valued
15
- attribute named AS.
16
-
17
- With the allbut option, it groups all attributes not specified in ATTRIBUTES
18
- instead.
19
-
20
- EXAMPLE
21
-
22
- # Group pid and qty as a relation-valued attribute names supplying
23
- !(alf group supplies -- pid qty -- supplying)
24
-
25
- # Group all but pid ...
26
- !(alf group supplies --allbut -- pid -- supplying)
27
-
@@ -1,14 +0,0 @@
1
-
2
- Relational hierarchy (recursive relation-trees)
3
-
4
- SYNOPSIS
5
-
6
- #(signature)
7
-
8
- OPTIONS
9
-
10
- #(summarized_options)
11
-
12
- DESCRIPTION
13
-
14
- This operator converts a "flat" relation to a recursively defined one.
@@ -1,20 +0,0 @@
1
-
2
- Relational heading inference (print the relation type)
3
-
4
- SYNOPSIS
5
-
6
- #(signature)
7
-
8
- DESCRIPTION
9
-
10
- This operator simply outputs a relation containing one tuple: the heading of
11
- its operand.
12
-
13
- EXAMPLE
14
-
15
- # What is the heading of the `suppliers` relation?
16
- !(alf infer-heading suppliers)
17
-
18
- # What is the heading of the following join?
19
- !(alf join suppliers supplies | alf infer-heading)
20
-
@@ -1,13 +0,0 @@
1
-
2
- Relational intersection (aka a logical and)
3
-
4
- SYNOPSIS
5
-
6
- #(signature)
7
-
8
- DESCRIPTION
9
-
10
- This operator computes the relational intersection of its operands. Such
11
- intersection is simply the set of tuples that appear both in LEFT and in
12
- RIGHT.
13
-
@@ -1,28 +0,0 @@
1
-
2
- Relational join (and cartesian product)
3
-
4
- SYNOPSIS
5
-
6
- #(signature)
7
-
8
- DESCRIPTION
9
-
10
- This operator computes the (natural) join of its operands.
11
-
12
- Natural join means that, unlike what is commonly used in SQL, joining is based
13
- on equality of all attributes that are shared between LEFT and RIGHT performed
14
- on common attribute names. You can use the `rename` operator if this behavior
15
- does not fit your needs.
16
-
17
- When operands have no attribute in common, this operator naturally "degenerates"
18
- to a cartesian product.
19
-
20
- EXAMPLE
21
-
22
- # Computes natural join of suppliers and supplies (on sid, the only
23
- # attribute they have in common)
24
- !(alf join suppliers supplies)
25
-
26
- # The following example demontrates the cartesian product with a generated
27
- # relation
28
- !(alf generator -- 3 -- num | alf join cities)
@@ -1,24 +0,0 @@
1
-
2
- Relational matching (join + project back on left)
3
-
4
- SYNOPSIS
5
-
6
- #(signature)
7
-
8
- DESCRIPTION
9
-
10
- This operator restricts its LEFT operand to tuples for which there exists at
11
- least one tuple in RIGHT that (naturally) joins. This is a shortcut operator
12
- for the following longer expression:
13
-
14
- (project (join xxx, yyy), [xxx's attributes])
15
-
16
- Or equivalently,
17
-
18
- (join xxx, (project xxx, [common attributes]))
19
-
20
- EXAMPLE
21
-
22
- # Which suppliers supply at least one part?
23
- !(alf matching suppliers supplies)
24
-