alf 0.10.0 → 0.10.1

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 (249) hide show
  1. data/CHANGELOG.md +22 -0
  2. data/Gemfile +3 -3
  3. data/Gemfile.lock +9 -10
  4. data/alf.gemspec +3 -3
  5. data/alf.noespec +5 -4
  6. data/doc/commands/show.md +1 -1
  7. data/doc/operators/relational/heading.md +20 -0
  8. data/doc/operators/relational/join.md +4 -3
  9. data/doc/operators/relational/matching.md +7 -3
  10. data/doc/operators/relational/restrict.md +2 -2
  11. data/examples/hitradio/compact.rb +48 -0
  12. data/examples/hitradio/compare1.rb +28 -0
  13. data/examples/hitradio/gz_reader.rb +23 -0
  14. data/examples/hitradio/hitradio-1.alf +1 -0
  15. data/examples/hitradio/hitradio.log +25080 -0
  16. data/examples/hitradio/hitradio.mar +25081 -0
  17. data/examples/hitradio/hitradio.mar.gz +0 -0
  18. data/examples/hitradio/hitradio.rash +25080 -0
  19. data/examples/hitradio/mar_reader.rb +18 -0
  20. data/lib/alf/aggregator/aggregators.rb +28 -0
  21. data/lib/alf/aggregator/aggregators.rbc +2640 -0
  22. data/lib/alf/aggregator/base.rbc +1055 -0
  23. data/lib/alf/aggregator/class_methods.rb +1 -1
  24. data/lib/alf/aggregator/class_methods.rbc +830 -0
  25. data/lib/alf/buffer/sorted.rbc +715 -0
  26. data/lib/alf/command/class_methods.rbc +453 -0
  27. data/lib/alf/command/doc_manager.rbc +1604 -0
  28. data/lib/alf/command/exec.rbc +408 -0
  29. data/lib/alf/command/help.rbc +764 -0
  30. data/lib/alf/command/main.rb +37 -5
  31. data/lib/alf/command/main.rbc +3612 -0
  32. data/lib/alf/command/show.rb +37 -5
  33. data/lib/alf/command/show.rbc +1327 -0
  34. data/lib/alf/environment/base.rbc +459 -0
  35. data/lib/alf/environment/class_methods.rbc +1110 -0
  36. data/lib/alf/environment/explicit.rb +2 -2
  37. data/lib/alf/environment/explicit.rbc +601 -0
  38. data/lib/alf/environment/folder.rb +2 -2
  39. data/lib/alf/environment/folder.rbc +942 -0
  40. data/lib/alf/errors.rb +4 -0
  41. data/lib/alf/errors.rbc +155 -0
  42. data/lib/alf/extra/csv.rb +5 -2
  43. data/lib/alf/extra/csv.rbc +2021 -0
  44. data/lib/alf/extra/logs.rbc +1957 -0
  45. data/lib/alf/extra/sequel.rbc +1417 -0
  46. data/lib/alf/extra/yaml.rbc +435 -0
  47. data/lib/alf/extra.rbc +101 -0
  48. data/lib/alf/iterator/base.rbc +437 -0
  49. data/lib/alf/iterator/class_methods.rbc +518 -0
  50. data/lib/alf/iterator/proxy.rbc +599 -0
  51. data/lib/alf/lispy/instance_methods.rbc +2535 -0
  52. data/lib/alf/loader.rb +2 -1
  53. data/lib/alf/loader.rbc +85 -0
  54. data/lib/alf/operator/base.rbc +860 -0
  55. data/lib/alf/operator/binary.rbc +595 -0
  56. data/lib/alf/operator/cesure.rbc +883 -0
  57. data/lib/alf/operator/class_methods.rbc +1915 -0
  58. data/lib/alf/operator/experimental.rbc +200 -0
  59. data/lib/alf/operator/non_relational/autonum.rbc +587 -0
  60. data/lib/alf/operator/non_relational/clip.rbc +522 -0
  61. data/lib/alf/operator/non_relational/coerce.rbc +596 -0
  62. data/lib/alf/operator/non_relational/compact.rbc +1283 -0
  63. data/lib/alf/operator/non_relational/defaults.rbc +733 -0
  64. data/lib/alf/operator/non_relational/generator.rbc +1015 -0
  65. data/lib/alf/operator/non_relational/sort.rbc +665 -0
  66. data/lib/alf/operator/nullary.rbc +404 -0
  67. data/lib/alf/operator/relational/extend.rbc +616 -0
  68. data/lib/alf/operator/relational/group.rbc +968 -0
  69. data/lib/alf/operator/relational/heading.rb +30 -0
  70. data/lib/alf/operator/relational/heading.rbc +657 -0
  71. data/lib/alf/operator/relational/intersect.rbc +969 -0
  72. data/lib/alf/operator/relational/join.rbc +1708 -0
  73. data/lib/alf/operator/relational/matching.rbc +1047 -0
  74. data/lib/alf/operator/relational/minus.rbc +965 -0
  75. data/lib/alf/operator/relational/not_matching.rbc +1047 -0
  76. data/lib/alf/operator/relational/project.rbc +669 -0
  77. data/lib/alf/operator/relational/quota.rbc +1193 -0
  78. data/lib/alf/operator/relational/rank.rbc +1217 -0
  79. data/lib/alf/operator/relational/rename.rbc +496 -0
  80. data/lib/alf/operator/relational/restrict.rbc +611 -0
  81. data/lib/alf/operator/relational/summarize.rbc +1922 -0
  82. data/lib/alf/operator/relational/ungroup.rbc +643 -0
  83. data/lib/alf/operator/relational/union.rbc +846 -0
  84. data/lib/alf/operator/relational/unwrap.rbc +540 -0
  85. data/lib/alf/operator/relational/wrap.rbc +560 -0
  86. data/lib/alf/operator/shortcut.rbc +809 -0
  87. data/lib/alf/operator/signature.rbc +4640 -0
  88. data/lib/alf/operator/transform.rbc +484 -0
  89. data/lib/alf/operator/unary.rbc +629 -0
  90. data/lib/alf/reader/alf_file.rbc +464 -0
  91. data/lib/alf/reader/base.rbc +1613 -0
  92. data/lib/alf/reader/class_methods.rb +1 -1
  93. data/lib/alf/reader/class_methods.rbc +1099 -0
  94. data/lib/alf/reader/rash.rbc +583 -0
  95. data/lib/alf/relation/class_methods.rbc +674 -0
  96. data/lib/alf/relation/instance_methods.rb +7 -0
  97. data/lib/alf/relation/instance_methods.rbc +2107 -0
  98. data/lib/alf/renderer/base.rbc +936 -0
  99. data/lib/alf/renderer/class_methods.rbc +875 -0
  100. data/lib/alf/renderer/rash.rb +16 -2
  101. data/lib/alf/renderer/rash.rbc +802 -0
  102. data/lib/alf/renderer/text.rb +54 -16
  103. data/lib/alf/renderer/text.rbc +5530 -0
  104. data/lib/alf/tools/coerce.rbc +352 -0
  105. data/lib/alf/tools/miscellaneous.rb +8 -1
  106. data/lib/alf/tools/miscellaneous.rbc +1497 -0
  107. data/lib/alf/tools/to_lispy.rbc +2618 -0
  108. data/lib/alf/tools/to_ruby_literal.rbc +344 -0
  109. data/lib/alf/tools/tuple_handle.rbc +738 -0
  110. data/lib/alf/types/attr_list.rbc +1535 -0
  111. data/lib/alf/types/attr_name.rbc +781 -0
  112. data/lib/alf/types/boolean.rbc +365 -0
  113. data/lib/alf/types/heading.rb +16 -1
  114. data/lib/alf/types/heading.rbc +1778 -0
  115. data/lib/alf/types/ordering.rbc +2228 -0
  116. data/lib/alf/types/renaming.rbc +1064 -0
  117. data/lib/alf/types/summarization.rbc +1394 -0
  118. data/lib/alf/types/tuple_computation.rbc +1061 -0
  119. data/lib/alf/types/tuple_expression.rbc +1016 -0
  120. data/lib/alf/types/tuple_predicate.rbc +1349 -0
  121. data/lib/alf/version.rb +1 -1
  122. data/lib/alf/version.rbc +350 -0
  123. data/lib/alf.rb +13 -5
  124. data/lib/alf.rbc +3884 -0
  125. data/spec/integration/command/alf/alf_help.stdout +8 -6
  126. data/spec/integration/command/help/help_1.stdout +3 -1
  127. data/spec/integration/command/show/show_base.cmd +1 -1
  128. data/spec/integration/command/show/show_base_sort_1.cmd +1 -0
  129. data/spec/integration/command/show/show_base_sort_1.stdout +9 -0
  130. data/spec/integration/command/show/show_base_sort_2.cmd +1 -0
  131. data/spec/integration/command/show/show_base_sort_2.stdout +9 -0
  132. data/spec/integration/command/show/show_ff.cmd +1 -0
  133. data/spec/integration/command/show/show_ff.stdout +10 -0
  134. data/spec/integration/command/show/show_rash_pretty.cmd +1 -0
  135. data/spec/integration/command/show/show_rash_pretty.stdout +30 -0
  136. data/spec/integration/test_alf.rbc +1098 -0
  137. data/spec/integration/test_command.rbc +1832 -0
  138. data/spec/integration/test_examples.rbc +559 -0
  139. data/spec/integration/test_semantics.rbc +991 -0
  140. data/spec/regression/alf_file/test___FILE__.rbc +524 -0
  141. data/spec/regression/heading/test_heading_with_date.rbc +381 -0
  142. data/spec/regression/lispy/test_compile.rbc +404 -0
  143. data/spec/regression/logs/test_path_attribute.rbc +687 -0
  144. data/spec/regression/relation/test_relation_allbut_all.rbc +468 -0
  145. data/spec/regression/relation/test_relation_with_date.rbc +381 -0
  146. data/spec/regression/restrict/test_restrict_with_keywords.rbc +628 -0
  147. data/spec/shared/a_value.rbc +337 -0
  148. data/spec/shared/an_operator_class.rbc +908 -0
  149. data/spec/spec_helper.rbc +453 -0
  150. data/spec/unit/assumptions/test_file.rbc +668 -0
  151. data/spec/unit/assumptions/test_instance_eval.rbc +654 -0
  152. data/spec/unit/assumptions/test_scoping.rbc +755 -0
  153. data/spec/unit/assumptions/test_set.rbc +1928 -0
  154. data/spec/unit/command/doc_manager/test_call.rbc +1537 -0
  155. data/spec/unit/csv/test_reader.rbc +2228 -0
  156. data/spec/unit/csv/test_renderer.rbc +2426 -0
  157. data/spec/unit/environment/test_explicit.rbc +464 -0
  158. data/spec/unit/environment/test_folder.rb +2 -2
  159. data/spec/unit/environment/test_folder.rbc +1304 -0
  160. data/spec/unit/lispy/test_relation.rbc +1477 -0
  161. data/spec/unit/lispy/test_run.rbc +1735 -0
  162. data/spec/unit/lispy/test_tuple.rbc +1686 -0
  163. data/spec/unit/logs/test_reader.rb +6 -4
  164. data/spec/unit/logs/test_reader.rbc +1807 -0
  165. data/spec/unit/operator/non_relational/compact/test_buffer_based.rbc +1127 -0
  166. data/spec/unit/operator/non_relational/compact/test_sort_based.rbc +1127 -0
  167. data/spec/unit/operator/non_relational/test_autonum.rbc +1969 -0
  168. data/spec/unit/operator/non_relational/test_clip.rbc +1850 -0
  169. data/spec/unit/operator/non_relational/test_coerce.rbc +1290 -0
  170. data/spec/unit/operator/non_relational/test_compact.rbc +1382 -0
  171. data/spec/unit/operator/non_relational/test_defaults.rbc +2319 -0
  172. data/spec/unit/operator/non_relational/test_generator.rbc +2361 -0
  173. data/spec/unit/operator/non_relational/test_sort.rbc +2583 -0
  174. data/spec/unit/operator/relational/join/test_hash_based.rbc +2481 -0
  175. data/spec/unit/operator/relational/matching/test_hash_based.rbc +2458 -0
  176. data/spec/unit/operator/relational/not_matching/test_hash_based.rbc +1632 -0
  177. data/spec/unit/operator/relational/summarize/test_hash_based.rbc +1990 -0
  178. data/spec/unit/operator/relational/summarize/test_sort_based.rbc +1990 -0
  179. data/spec/unit/operator/relational/test_extend.rbc +1300 -0
  180. data/spec/unit/operator/relational/test_group.rbc +2142 -0
  181. data/spec/unit/operator/relational/test_intersect.rbc +2069 -0
  182. data/spec/unit/operator/relational/test_join.rbc +1282 -0
  183. data/spec/unit/operator/relational/test_minus.rbc +1995 -0
  184. data/spec/unit/operator/relational/test_project.rbc +2870 -0
  185. data/spec/unit/operator/relational/test_quota.rbc +1788 -0
  186. data/spec/unit/operator/relational/test_rank.rbc +2079 -0
  187. data/spec/unit/operator/relational/test_rename.rbc +1158 -0
  188. data/spec/unit/operator/relational/test_restrict.rbc +2305 -0
  189. data/spec/unit/operator/relational/test_summarize.rbc +2570 -0
  190. data/spec/unit/operator/relational/test_ungroup.rbc +1425 -0
  191. data/spec/unit/operator/relational/test_union.rbc +1089 -0
  192. data/spec/unit/operator/relational/test_unwrap.rbc +1176 -0
  193. data/spec/unit/operator/relational/test_wrap.rbc +1203 -0
  194. data/spec/unit/operator/signature/test_collect_on.rbc +1989 -0
  195. data/spec/unit/operator/signature/test_initialize.rbc +544 -0
  196. data/spec/unit/operator/signature/test_install.rbc +1671 -0
  197. data/spec/unit/operator/signature/test_option_parser.rbc +1348 -0
  198. data/spec/unit/operator/signature/test_parse_args.rbc +1908 -0
  199. data/spec/unit/operator/signature/test_parse_argv.rbc +2878 -0
  200. data/spec/unit/operator/signature/test_to_lispy.rbc +3305 -0
  201. data/spec/unit/operator/signature/test_to_shell.rbc +3327 -0
  202. data/spec/unit/operator/test_non_relational.rbc +571 -0
  203. data/spec/unit/operator/test_relational.rb +2 -1
  204. data/spec/unit/operator/test_relational.rbc +758 -0
  205. data/spec/unit/reader/test_alf_file.rbc +1107 -0
  206. data/spec/unit/reader/test_initialize.rbc +1774 -0
  207. data/spec/unit/reader/test_rash.rbc +1127 -0
  208. data/spec/unit/relation/test_coerce.rbc +2320 -0
  209. data/spec/unit/relation/test_inspect.rbc +502 -0
  210. data/spec/unit/relation/test_relops.rbc +1585 -0
  211. data/spec/unit/relation/test_to_a.rbc +1112 -0
  212. data/spec/unit/renderer/test_initialize.rbc +1766 -0
  213. data/spec/unit/sequel/test_environment.rbc +1723 -0
  214. data/spec/unit/test_aggregator.rb +38 -1
  215. data/spec/unit/test_aggregator.rbc +4358 -0
  216. data/spec/unit/test_environment.rbc +1271 -0
  217. data/spec/unit/test_lispy.rbc +879 -0
  218. data/spec/unit/test_operator.rbc +531 -0
  219. data/spec/unit/test_reader.rb +6 -2
  220. data/spec/unit/test_reader.rbc +1249 -0
  221. data/spec/unit/test_relation.rbc +2588 -0
  222. data/spec/unit/test_renderer.rb +12 -1
  223. data/spec/unit/test_renderer.rbc +2011 -0
  224. data/spec/unit/text/test_cell.rb +1 -0
  225. data/spec/unit/text/test_cell.rbc +1532 -0
  226. data/spec/unit/text/test_row.rbc +847 -0
  227. data/spec/unit/text/test_table.rbc +978 -0
  228. data/spec/unit/tools/test_coalesce.rbc +456 -0
  229. data/spec/unit/tools/test_coerce.rbc +279 -0
  230. data/spec/unit/tools/test_to_lispy.rbc +5711 -0
  231. data/spec/unit/tools/test_to_ruby_literal.rbc +272 -0
  232. data/spec/unit/tools/test_tools.rbc +672 -0
  233. data/spec/unit/tools/test_tuple_handle.rbc +1591 -0
  234. data/spec/unit/tools/test_tuple_heading.rb +20 -0
  235. data/spec/unit/tools/test_tuple_heading.rbc +821 -0
  236. data/spec/unit/tools/test_varargs.rbc +495 -0
  237. data/spec/unit/types/heading/test_union.rb +21 -0
  238. data/spec/unit/types/heading/test_union.rbc +1043 -0
  239. data/spec/unit/types/test_attr_list.rbc +4481 -0
  240. data/spec/unit/types/test_attr_name.rbc +1872 -0
  241. data/spec/unit/types/test_heading.rbc +1735 -0
  242. data/spec/unit/types/test_ordering.rbc +3695 -0
  243. data/spec/unit/types/test_renaming.rbc +2426 -0
  244. data/spec/unit/types/test_summarization.rbc +2538 -0
  245. data/spec/unit/types/test_tuple_computation.rbc +2340 -0
  246. data/spec/unit/types/test_tuple_expression.rbc +2285 -0
  247. data/spec/unit/types/test_tuple_predicate.rbc +3168 -0
  248. data/tasks/gh-pages.rake +1 -1
  249. metadata +529 -125
data/CHANGELOG.md CHANGED
@@ -1,3 +1,25 @@
1
+ # 0.10.1 / 2011-08-31
2
+
3
+ ## Miscellaneous enhancements
4
+
5
+ * Added Variance and Stddev aggregation operators; they are available under
6
+ Aggregator.variance{} and Aggregator.stddev{}, respectively
7
+ * Added a --pretty option to 'alf', whose semantics is delegated to the output
8
+ renderer. Same option is available on 'alf show'.
9
+ * 'alf show' now accepts an optional ordering argument. This avoids explicitely
10
+ including non-relational sort invocations in your pipe (sorting should be
11
+ seen as a displaying issue)
12
+ * Added an options hash to text renderer, :float_format among others
13
+ * Added a --ff option to 'alf show', for float format in text rendering
14
+
15
+ ## Bugfixes
16
+
17
+ * Alf::Environment::(Folder/Explicit)#dataset now correctly raises a
18
+ NoSuchDatasetError when the dataset cannot be found, as required by the
19
+ specification.
20
+ * Alf::Reader.reader now correctly returns a Rash reader when invoked on a
21
+ StringIO
22
+
1
23
  # 0.10.0 / 2011-08-15
2
24
 
3
25
  ## New recognized data sources
data/Gemfile CHANGED
@@ -1,8 +1,9 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
3
  group :runtime do
4
- gem "quickl", "~> 0.4.0"
5
- gem "myrrha", "~> 1.2.0"
4
+ gem "quickl", "~> 0.4.1"
5
+ gem "myrrha", "~> 1.2.1"
6
+ gem "highline", "~> 1.6.2"
6
7
  end
7
8
 
8
9
  group :test do
@@ -17,7 +18,6 @@ group :release do
17
18
  end
18
19
 
19
20
  group :doc do
20
- gem "rcov", "~> 0.9.9"
21
21
  gem "yard", "~> 0.7.2"
22
22
  gem "bluecloth", "~> 2.1.0"
23
23
  gem "redcarpet", "~> 1.17.2"
data/Gemfile.lock CHANGED
@@ -2,15 +2,14 @@ GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
4
  bluecloth (2.1.0)
5
- diff-lcs (1.1.2)
5
+ diff-lcs (1.1.3)
6
6
  fastercsv (1.5.4)
7
- myrrha (1.2.0)
8
- quickl (0.4.0)
7
+ highline (1.6.2)
8
+ myrrha (1.2.1)
9
+ quickl (0.4.1)
9
10
  rake (0.9.2)
10
- rcov (0.9.9)
11
- rcov (0.9.9-java)
12
11
  redcarpet (1.17.2)
13
- request-log-analyzer (1.11.0)
12
+ request-log-analyzer (1.11.1)
14
13
  rspec (2.6.0)
15
14
  rspec-core (~> 2.6.0)
16
15
  rspec-expectations (~> 2.6.0)
@@ -20,7 +19,7 @@ GEM
20
19
  diff-lcs (~> 1.1.2)
21
20
  rspec-mocks (2.6.0)
22
21
  sequel (3.25.0)
23
- sqlite3 (1.3.3)
22
+ sqlite3 (1.3.4)
24
23
  wlang (0.10.2)
25
24
  yard (0.7.2)
26
25
 
@@ -31,10 +30,10 @@ PLATFORMS
31
30
  DEPENDENCIES
32
31
  bluecloth (~> 2.1.0)
33
32
  fastercsv (~> 1.5.4)
34
- myrrha (~> 1.2.0)
35
- quickl (~> 0.4.0)
33
+ highline (~> 1.6.2)
34
+ myrrha (~> 1.2.1)
35
+ quickl (~> 0.4.1)
36
36
  rake (~> 0.9.2)
37
- rcov (~> 0.9.9)
38
37
  redcarpet (~> 1.17.2)
39
38
  request-log-analyzer (~> 1.11.0)
40
39
  rspec (~> 2.6.0)
data/alf.gemspec CHANGED
@@ -126,7 +126,6 @@ Gem::Specification.new do |s|
126
126
  s.add_development_dependency("rake", "~> 0.9.2")
127
127
  s.add_development_dependency("rspec", "~> 2.6.0")
128
128
  s.add_development_dependency("wlang", "~> 0.10.2")
129
- s.add_development_dependency("rcov", "~> 0.9.9")
130
129
  s.add_development_dependency("yard", "~> 0.7.2")
131
130
  s.add_development_dependency("bluecloth", "~> 2.1.0")
132
131
  s.add_development_dependency("redcarpet", "~> 1.17.2")
@@ -134,8 +133,9 @@ Gem::Specification.new do |s|
134
133
  s.add_development_dependency("request-log-analyzer", "~> 1.11.0")
135
134
  s.add_development_dependency("sequel", "~> 3.25.0")
136
135
  s.add_development_dependency("sqlite3", "~> 1.3.0")
137
- s.add_dependency("quickl", "~> 0.4.0")
138
- s.add_dependency("myrrha", "~> 1.2.0")
136
+ s.add_dependency("quickl", "~> 0.4.1")
137
+ s.add_dependency("myrrha", "~> 1.2.1")
138
+ s.add_dependency("highline", "~> 1.6.2")
139
139
 
140
140
  # The version of ruby required by this gem
141
141
  #
data/alf.noespec CHANGED
@@ -16,7 +16,7 @@ variables:
16
16
  upper:
17
17
  Alf
18
18
  version:
19
- 0.10.0
19
+ 0.10.1
20
20
  summary: |-
21
21
  Relational Algebra at your fingertips
22
22
  description: |-
@@ -33,12 +33,13 @@ variables:
33
33
  - http://rubygems.org/gems/alf
34
34
  - http://rubydoc.info/gems/alf
35
35
  dependencies:
36
- - {name: quickl, version: "~> 0.4.0", groups: [runtime ]}
37
- - {name: myrrha, version: "~> 1.2.0", groups: [runtime ]}
36
+ - {name: quickl, version: "~> 0.4.1", groups: [runtime ]}
37
+ - {name: myrrha, version: "~> 1.2.1", groups: [runtime ]}
38
+ - {name: highline, version: "~> 1.6.2", groups: [runtime ]}
38
39
  - {name: rake, version: "~> 0.9.2", groups: [test, release]}
39
40
  - {name: rspec, version: "~> 2.6.0", groups: [test, release]}
40
41
  - {name: wlang, version: "~> 0.10.2", groups: [release ]}
41
- - {name: rcov, version: "~> 0.9.9", groups: [doc ]}
42
+ #- {name: rcov, version: "~> 0.9.9", groups: [doc ]}
42
43
  - {name: yard, version: "~> 0.7.2", groups: [doc ]}
43
44
  - {name: bluecloth, version: "~> 2.1.0", groups: [doc ]}
44
45
  - {name: redcarpet, version: "~> 1.17.2", groups: [doc ]}
data/doc/commands/show.md CHANGED
@@ -3,7 +3,7 @@ Output input tuples through a specific renderer (text, yaml, ...)
3
3
 
4
4
  SYNOPSIS
5
5
 
6
- alf #(command_name) DATASET
6
+ alf #(command_name) DATASET -- [ORDERING]
7
7
 
8
8
  OPTIONS
9
9
 
@@ -0,0 +1,20 @@
1
+
2
+ Relational heading (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 heading suppliers)
17
+
18
+ # What is the heading of the following join?
19
+ !(alf join suppliers supplies | alf heading)
20
+
@@ -9,9 +9,10 @@ DESCRIPTION
9
9
 
10
10
  This operator computes the (natural) join of its operands.
11
11
 
12
- Natural join means that, unlike what is commonly used in SQL, the join is
13
- performed on common attribute names. You can use the `rename` operator if this
14
- behavior does not fit your needs.
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.
15
16
 
16
17
  When operands have no attribute in common, this operator naturally "degenerates"
17
18
  to a cartesian product.
@@ -7,12 +7,16 @@ SYNOPSIS
7
7
 
8
8
  DESCRIPTION
9
9
 
10
- This operator restricts its LEFT operand to tuples for which there exists
11
- at least one tuple in RIGHT that (naturally) joins. This is a shortcut
12
- operator for the following longer expression:
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
13
 
14
14
  (project (join xxx, yyy), [xxx's attributes])
15
15
 
16
+ Or equivalently,
17
+
18
+ (join xxx, (project xxx, [common attributes]))
19
+
16
20
  EXAMPLE
17
21
 
18
22
  # Which suppliers supply at least one part?
@@ -7,8 +7,8 @@ SYNOPSIS
7
7
 
8
8
  DESCRIPTION
9
9
 
10
- This command restricts tuples to those for which PREDICATE evaluates to
11
- true.
10
+ This command restricts restricts relations to those tuples for which PREDICATE
11
+ evaluates to true.
12
12
 
13
13
  PREDICATE must be a valid tuple expression that returns a truth-value. It
14
14
  may be specified as a ruby code literal, or a mapping between (name, value)
@@ -0,0 +1,48 @@
1
+ require 'rubygems'
2
+ require 'alf'
3
+ require 'benchmark'
4
+
5
+ #rel = Alf.lispy('.').compile{ environment.dataset("hitradio.log") }
6
+ #keys = nil
7
+ #rel.each do |tuple|
8
+ # unless keys
9
+ # keys = tuple.keys
10
+ # puts Alf::Tools.to_ruby_literal(keys)
11
+ # end
12
+ # values = keys.collect{|k| tuple[k]}
13
+ # puts Alf::Tools.to_ruby_literal(values)
14
+ #end
15
+
16
+ m = Benchmark.measure do
17
+ keys = nil
18
+ File.open("hitradio.mar").each_line do |line|
19
+ eval(line)
20
+ end
21
+ end
22
+ puts "hitradio.mar: #{m}"
23
+
24
+ m = Benchmark.measure do
25
+ rel = Alf.lispy('.').compile{ environment.dataset("hitradio.log") }
26
+ rel.each do |tuple|
27
+ end
28
+ end
29
+ puts "hitradio.log: #{m}"
30
+
31
+ m = Benchmark.measure do
32
+ rel = Alf.lispy('.').compile{ environment.dataset("hitradio.rash") }
33
+ rel.each do |tuple|
34
+ end
35
+ end
36
+ puts "hitradio.rash: #{m}"
37
+
38
+ require 'zlib'
39
+ m = Benchmark.measure do
40
+ File.open("hitradio.mar.gz", "r") do |io|
41
+ reader = Zlib::GzipReader.new(io)
42
+ reader.each_line do |line|
43
+ eval(line)
44
+ end
45
+ end
46
+ end
47
+ puts "hitradio.mar.gz: #{m}"
48
+
@@ -0,0 +1,28 @@
1
+ require 'rubygems'
2
+ require 'alf'
3
+ require File.expand_path('../mar_reader', __FILE__)
4
+ require File.expand_path('../gz_reader', __FILE__)
5
+ require 'benchmark'
6
+
7
+ def which_ruby
8
+ if Object.const_defined?(:RUBY_DESCRIPTION)
9
+ RUBY_DESCRIPTION =~ /^([^\s]+\s*[^\s]+)/
10
+ $1
11
+ else
12
+ "ruby #{RUBY_VERSION} (#{RUBY_PLATFORM})"
13
+ end
14
+ end
15
+
16
+
17
+ log = Alf::Environment.folder('.').dataset("hitradio.log")
18
+ rash = Alf::Environment.folder('.').dataset("hitradio.rash")
19
+ mar = Alf::Environment.folder('.').dataset("hitradio.mar")
20
+ gz = Alf::Environment.folder('.').dataset("hitradio.mar.gz")
21
+
22
+ puts which_ruby
23
+ Benchmark.bm do |bench|
24
+ bench.report('.log'){ log.each{} }
25
+ bench.report('.rash'){ rash.each{} }
26
+ bench.report('.mar'){ mar.each{} }
27
+ bench.report('.gz'){ gz.each{} }
28
+ end
@@ -0,0 +1,23 @@
1
+ require 'alf'
2
+ require 'zlib'
3
+ class GzReader < Alf::Reader
4
+
5
+ def each
6
+ keys = nil
7
+ with_input_io do |io|
8
+ reader = Zlib::GzipReader.new(io)
9
+ reader.each_line do |line|
10
+ decoded = eval(line)
11
+ if keys.nil?
12
+ keys = decoded
13
+ else
14
+ yield Hash[keys.zip(decoded)]
15
+ end
16
+ end
17
+ end
18
+ end
19
+
20
+ Alf::Reader.register(:gz, [".gz"], self)
21
+ end
22
+
23
+
@@ -0,0 +1 @@
1
+ (restrict (rank (summarize "hitradio.log", [:path], :weight => sum{ bytes_sent }), [[:weight, :desc]], :podium), lambda{ podium < 10 })