alf 0.12.2 → 0.13.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.
- data/CHANGELOG.md +186 -80
- data/Gemfile +16 -32
- data/Gemfile.lock +35 -34
- data/LICENCE.md +1 -1
- data/Manifest.txt +7 -9
- data/README.md +139 -809
- data/alf.gemspec +6 -15
- data/alf.noespec +16 -34
- data/lib/alf.rb +3 -73
- data/lib/alf/loader.rb +3 -3
- data/lib/alf/version.rb +2 -2
- data/spec/spec_helper.rb +3 -18
- data/spec/test_alf.rb +8 -0
- data/tasks/test.rake +6 -0
- data/test/migrations/test_folder_migration.rb +18 -0
- data/test/migrations/test_sequel_migration.rb +34 -0
- data/test/seeding/test_seeding.rb +49 -0
- data/test/test_alf.rb +8 -0
- data/test/test_helpers.rb +24 -0
- metadata +54 -952
- data/TODO.md +0 -21
- data/bin/alf +0 -27
- data/doc/commands/exec.md +0 -16
- data/doc/commands/help.md +0 -11
- data/doc/commands/main.md +0 -33
- data/doc/commands/show.md +0 -19
- data/doc/operators/non_relational/autonum.md +0 -23
- data/doc/operators/non_relational/clip.md +0 -31
- data/doc/operators/non_relational/coerce.md +0 -15
- data/doc/operators/non_relational/compact.md +0 -20
- data/doc/operators/non_relational/defaults.md +0 -32
- data/doc/operators/non_relational/generator.md +0 -20
- data/doc/operators/non_relational/sort.md +0 -24
- data/doc/operators/relational/extend.md +0 -18
- data/doc/operators/relational/group.md +0 -27
- data/doc/operators/relational/heading.md +0 -20
- data/doc/operators/relational/intersect.md +0 -13
- data/doc/operators/relational/join.md +0 -28
- data/doc/operators/relational/matching.md +0 -24
- data/doc/operators/relational/minus.md +0 -12
- data/doc/operators/relational/not-matching.md +0 -20
- data/doc/operators/relational/project.md +0 -28
- data/doc/operators/relational/quota.md +0 -21
- data/doc/operators/relational/rank.md +0 -27
- data/doc/operators/relational/rename.md +0 -17
- data/doc/operators/relational/restrict.md +0 -25
- data/doc/operators/relational/summarize.md +0 -25
- data/doc/operators/relational/ungroup.md +0 -20
- data/doc/operators/relational/union.md +0 -14
- data/doc/operators/relational/unwrap.md +0 -20
- data/doc/operators/relational/wrap.md +0 -24
- data/examples/csv/suppliers.csv +0 -6
- data/examples/logs/access.log +0 -1000
- data/examples/logs/combined.alf +0 -2
- data/examples/logs/hits.alf +0 -14
- data/examples/logs/not_found.alf +0 -7
- data/examples/logs/robots-cheating.alf +0 -11
- data/examples/logs/robots.alf +0 -8
- data/examples/operators/autonum.alf +0 -6
- data/examples/operators/cities.rash +0 -4
- data/examples/operators/clip.alf +0 -3
- data/examples/operators/compact.alf +0 -2
- data/examples/operators/database.alf +0 -5
- data/examples/operators/defaults.alf +0 -3
- data/examples/operators/extend.alf +0 -3
- data/examples/operators/group.alf +0 -3
- data/examples/operators/intersect.alf +0 -4
- data/examples/operators/join.alf +0 -2
- data/examples/operators/matching.alf +0 -2
- data/examples/operators/minus.alf +0 -8
- data/examples/operators/not_matching.alf +0 -2
- data/examples/operators/nulls.rash +0 -3
- data/examples/operators/parts.rash +0 -6
- data/examples/operators/project.alf +0 -3
- data/examples/operators/pseudo-with.alf +0 -7
- data/examples/operators/quota.alf +0 -4
- data/examples/operators/rank.alf +0 -4
- data/examples/operators/rename.alf +0 -3
- data/examples/operators/restrict.alf +0 -2
- data/examples/operators/schema.yaml +0 -28
- data/examples/operators/sort.alf +0 -4
- data/examples/operators/summarize.alf +0 -16
- data/examples/operators/suppliers.rash +0 -5
- data/examples/operators/supplies.rash +0 -12
- data/examples/operators/ungroup.alf +0 -4
- data/examples/operators/union.alf +0 -3
- data/examples/operators/unwrap.alf +0 -4
- data/examples/operators/wrap.alf +0 -2
- data/lib/alf-csv/alf/csv.rb +0 -3
- data/lib/alf-csv/alf/csv/commons.rb +0 -36
- data/lib/alf-csv/alf/csv/reader.rb +0 -33
- data/lib/alf-csv/alf/csv/renderer.rb +0 -38
- data/lib/alf-engine/alf/engine.rb +0 -25
- data/lib/alf-engine/alf/engine/aggregate.rb +0 -44
- data/lib/alf-engine/alf/engine/autonum.rb +0 -45
- data/lib/alf-engine/alf/engine/cesure.rb +0 -45
- data/lib/alf-engine/alf/engine/clip.rb +0 -53
- data/lib/alf-engine/alf/engine/coerce.rb +0 -46
- data/lib/alf-engine/alf/engine/cog.rb +0 -7
- data/lib/alf-engine/alf/engine/compact.rb +0 -26
- data/lib/alf-engine/alf/engine/compact/set.rb +0 -23
- data/lib/alf-engine/alf/engine/compact/uniq.rb +0 -23
- data/lib/alf-engine/alf/engine/concat.rb +0 -25
- data/lib/alf-engine/alf/engine/defaults.rb +0 -43
- data/lib/alf-engine/alf/engine/filter.rb +0 -41
- data/lib/alf-engine/alf/engine/generator.rb +0 -50
- data/lib/alf-engine/alf/engine/group.rb +0 -7
- data/lib/alf-engine/alf/engine/group/hash.rb +0 -40
- data/lib/alf-engine/alf/engine/join.rb +0 -7
- data/lib/alf-engine/alf/engine/join/hash.rb +0 -35
- data/lib/alf-engine/alf/engine/materialize.rb +0 -8
- data/lib/alf-engine/alf/engine/materialize/array.rb +0 -78
- data/lib/alf-engine/alf/engine/materialize/hash.rb +0 -122
- data/lib/alf-engine/alf/engine/quota.rb +0 -7
- data/lib/alf-engine/alf/engine/quota/cesure.rb +0 -46
- data/lib/alf-engine/alf/engine/rank.rb +0 -7
- data/lib/alf-engine/alf/engine/rank/cesure.rb +0 -48
- data/lib/alf-engine/alf/engine/rename.rb +0 -39
- data/lib/alf-engine/alf/engine/semi.rb +0 -7
- data/lib/alf-engine/alf/engine/semi/hash.rb +0 -39
- data/lib/alf-engine/alf/engine/set_attr.rb +0 -46
- data/lib/alf-engine/alf/engine/sort.rb +0 -28
- data/lib/alf-engine/alf/engine/sort/in_memory.rb +0 -39
- data/lib/alf-engine/alf/engine/summarize.rb +0 -8
- data/lib/alf-engine/alf/engine/summarize/cesure.rb +0 -51
- data/lib/alf-engine/alf/engine/summarize/hash.rb +0 -35
- data/lib/alf-engine/alf/engine/ungroup.rb +0 -29
- data/lib/alf-engine/alf/engine/unwrap.rb +0 -31
- data/lib/alf-engine/alf/engine/wrap.rb +0 -39
- data/lib/alf-logs/alf/logs.rb +0 -1
- data/lib/alf-logs/alf/logs/reader.rb +0 -98
- data/lib/alf-sequel/alf/sequel.rb +0 -2
- data/lib/alf-sequel/alf/sequel/environment.rb +0 -61
- data/lib/alf-sequel/alf/sequel/iterator.rb +0 -21
- data/lib/alf-shell/alf/shell.rb +0 -40
- data/lib/alf-shell/alf/shell/command.rb +0 -26
- data/lib/alf-shell/alf/shell/command/exec.rb +0 -11
- data/lib/alf-shell/alf/shell/command/help.rb +0 -30
- data/lib/alf-shell/alf/shell/command/main.rb +0 -136
- data/lib/alf-shell/alf/shell/command/main/class_methods.rb +0 -46
- data/lib/alf-shell/alf/shell/command/show.rb +0 -63
- data/lib/alf-shell/alf/shell/doc_manager.rb +0 -72
- data/lib/alf-shell/alf/shell/operator.rb +0 -86
- data/lib/alf-yaml/alf/yaml.rb +0 -1
- data/lib/alf-yaml/alf/yaml/renderer.rb +0 -22
- data/lib/alf/aggregator.rb +0 -51
- data/lib/alf/aggregator/avg.rb +0 -39
- data/lib/alf/aggregator/class_methods.rb +0 -77
- data/lib/alf/aggregator/collect.rb +0 -32
- data/lib/alf/aggregator/concat.rb +0 -47
- data/lib/alf/aggregator/count.rb +0 -32
- data/lib/alf/aggregator/instance_methods.rb +0 -119
- data/lib/alf/aggregator/max.rb +0 -32
- data/lib/alf/aggregator/min.rb +0 -32
- data/lib/alf/aggregator/stddev.rb +0 -25
- data/lib/alf/aggregator/sum.rb +0 -32
- data/lib/alf/aggregator/variance.rb +0 -45
- data/lib/alf/environment.rb +0 -34
- data/lib/alf/environment/class_methods.rb +0 -95
- data/lib/alf/environment/folder.rb +0 -60
- data/lib/alf/environment/instance_methods.rb +0 -26
- data/lib/alf/errors.rb +0 -5
- data/lib/alf/ext.rb +0 -4
- data/lib/alf/ext/relation.rb +0 -4
- data/lib/alf/iterator.rb +0 -28
- data/lib/alf/iterator/class_methods.rb +0 -20
- data/lib/alf/iterator/proxy.rb +0 -27
- data/lib/alf/lispy.rb +0 -24
- data/lib/alf/lispy/instance_methods.rb +0 -157
- data/lib/alf/operator.rb +0 -68
- data/lib/alf/operator/binary.rb +0 -21
- data/lib/alf/operator/class_methods.rb +0 -82
- data/lib/alf/operator/experimental.rb +0 -9
- data/lib/alf/operator/instance_methods.rb +0 -29
- data/lib/alf/operator/non_relational/autonum.rb +0 -19
- data/lib/alf/operator/non_relational/clip.rb +0 -20
- data/lib/alf/operator/non_relational/coerce.rb +0 -19
- data/lib/alf/operator/non_relational/compact.rb +0 -18
- data/lib/alf/operator/non_relational/defaults.rb +0 -22
- data/lib/alf/operator/non_relational/generator.rb +0 -20
- data/lib/alf/operator/non_relational/sort.rb +0 -19
- data/lib/alf/operator/nullary.rb +0 -11
- data/lib/alf/operator/relational/extend.rb +0 -19
- data/lib/alf/operator/relational/group.rb +0 -21
- data/lib/alf/operator/relational/heading.rb +0 -20
- data/lib/alf/operator/relational/intersect.rb +0 -18
- data/lib/alf/operator/relational/join.rb +0 -18
- data/lib/alf/operator/relational/matching.rb +0 -18
- data/lib/alf/operator/relational/minus.rb +0 -18
- data/lib/alf/operator/relational/not_matching.rb +0 -18
- data/lib/alf/operator/relational/project.rb +0 -22
- data/lib/alf/operator/relational/quota.rb +0 -23
- data/lib/alf/operator/relational/rank.rb +0 -22
- data/lib/alf/operator/relational/rename.rb +0 -18
- data/lib/alf/operator/relational/restrict.rb +0 -18
- data/lib/alf/operator/relational/summarize.rb +0 -27
- data/lib/alf/operator/relational/ungroup.rb +0 -19
- data/lib/alf/operator/relational/union.rb +0 -20
- data/lib/alf/operator/relational/unwrap.rb +0 -19
- data/lib/alf/operator/relational/wrap.rb +0 -20
- data/lib/alf/operator/signature.rb +0 -233
- data/lib/alf/operator/unary.rb +0 -16
- data/lib/alf/reader.rb +0 -37
- data/lib/alf/reader/alf_file.rb +0 -24
- data/lib/alf/reader/class_methods.rb +0 -91
- data/lib/alf/reader/instance_methods.rb +0 -97
- data/lib/alf/reader/rash.rb +0 -28
- data/lib/alf/relation.rb +0 -28
- data/lib/alf/relation/class_methods.rb +0 -28
- data/lib/alf/relation/instance_methods.rb +0 -119
- data/lib/alf/renderer.rb +0 -32
- data/lib/alf/renderer/class_methods.rb +0 -58
- data/lib/alf/renderer/instance_methods.rb +0 -55
- data/lib/alf/renderer/rash.rb +0 -33
- data/lib/alf/renderer/text.rb +0 -198
- data/lib/alf/tools.rb +0 -15
- data/lib/alf/tools/coerce.rb +0 -25
- data/lib/alf/tools/miscellaneous.rb +0 -111
- data/lib/alf/tools/to_lispy.rb +0 -96
- data/lib/alf/tools/to_relation.rb +0 -54
- data/lib/alf/tools/to_ruby_literal.rb +0 -31
- data/lib/alf/tools/tuple_handle.rb +0 -60
- data/lib/alf/types.rb +0 -49
- data/lib/alf/types/attr_list.rb +0 -160
- data/lib/alf/types/attr_name.rb +0 -66
- data/lib/alf/types/boolean.rb +0 -25
- data/lib/alf/types/heading.rb +0 -135
- data/lib/alf/types/ordering.rb +0 -146
- data/lib/alf/types/renaming.rb +0 -97
- data/lib/alf/types/size.rb +0 -57
- data/lib/alf/types/summarization.rb +0 -138
- data/lib/alf/types/tuple_computation.rb +0 -136
- data/lib/alf/types/tuple_expression.rb +0 -152
- data/lib/alf/types/tuple_predicate.rb +0 -73
- data/spec/integration/__database__/group.alf +0 -3
- data/spec/integration/__database__/parts.rash +0 -6
- data/spec/integration/__database__/suppliers.rash +0 -5
- data/spec/integration/__database__/suppliers_csv.csv +0 -6
- data/spec/integration/__database__/supplies.rash +0 -12
- data/spec/integration/alf/example.rash +0 -1
- data/spec/integration/alf/test_Relation.rb +0 -32
- data/spec/integration/ext/test_relation.rb +0 -16
- data/spec/integration/lispy/test_relation.rb +0 -37
- data/spec/integration/lispy/test_run.rb +0 -40
- data/spec/integration/lispy/test_tuple.rb +0 -36
- data/spec/integration/semantics/test_join.alf +0 -9
- data/spec/integration/semantics/test_minus.alf +0 -5
- data/spec/integration/semantics/test_project.alf +0 -8
- data/spec/integration/semantics/test_rank.alf +0 -34
- data/spec/integration/shell/alf/alf.db +0 -0
- data/spec/integration/shell/alf/alf_e.cmd +0 -1
- data/spec/integration/shell/alf/alf_e.stdout +0 -4
- data/spec/integration/shell/alf/alf_env.cmd +0 -1
- data/spec/integration/shell/alf/alf_env.stdout +0 -5
- data/spec/integration/shell/alf/alf_env_sqlite.cmd +0 -1
- data/spec/integration/shell/alf/alf_env_sqlite.stdout +0 -9
- data/spec/integration/shell/alf/alf_help.cmd +0 -1
- data/spec/integration/shell/alf/alf_help.stdout +0 -69
- data/spec/integration/shell/alf/alf_implicit.alf +0 -1
- data/spec/integration/shell/alf/alf_implicit_exec.cmd +0 -1
- data/spec/integration/shell/alf/alf_implicit_exec.stdout +0 -4
- data/spec/integration/shell/alf/alf_r.cmd +0 -1
- data/spec/integration/shell/alf/alf_r.stdout +0 -5
- data/spec/integration/shell/alf/alf_version.cmd +0 -1
- data/spec/integration/shell/alf/alf_version.stdout +0 -2
- data/spec/integration/shell/alf/alf_yaml.cmd +0 -1
- data/spec/integration/shell/alf/alf_yaml.stdout +0 -22
- data/spec/integration/shell/alf/rel.rash +0 -1
- data/spec/integration/shell/autonum/autonum_0.cmd +0 -1
- data/spec/integration/shell/autonum/autonum_0.stdout +0 -9
- data/spec/integration/shell/autonum/autonum_1.cmd +0 -1
- data/spec/integration/shell/autonum/autonum_1.stdout +0 -9
- data/spec/integration/shell/clip/clip_0.cmd +0 -1
- data/spec/integration/shell/clip/clip_0.stdout +0 -9
- data/spec/integration/shell/clip/clip_1.cmd +0 -1
- data/spec/integration/shell/clip/clip_1.stdout +0 -9
- data/spec/integration/shell/coerce/coerce_1.cmd +0 -1
- data/spec/integration/shell/coerce/coerce_1.stdout +0 -5
- data/spec/integration/shell/compact/compact_0.cmd +0 -1
- data/spec/integration/shell/compact/compact_0.stdout +0 -9
- data/spec/integration/shell/defaults/defaults_0.cmd +0 -1
- data/spec/integration/shell/defaults/defaults_0.stdout +0 -9
- data/spec/integration/shell/defaults/defaults_1.cmd +0 -1
- data/spec/integration/shell/defaults/defaults_1.stdout +0 -9
- data/spec/integration/shell/defaults/defaults_2.cmd +0 -1
- data/spec/integration/shell/defaults/defaults_2.stdout +0 -9
- data/spec/integration/shell/extend/extend_0.cmd +0 -1
- data/spec/integration/shell/extend/extend_0.stdout +0 -16
- data/spec/integration/shell/generator/generator_1.cmd +0 -1
- data/spec/integration/shell/generator/generator_1.stdout +0 -10
- data/spec/integration/shell/generator/generator_2.cmd +0 -1
- data/spec/integration/shell/generator/generator_2.stdout +0 -5
- data/spec/integration/shell/generator/generator_3.cmd +0 -1
- data/spec/integration/shell/generator/generator_3.stdout +0 -5
- data/spec/integration/shell/group/group_0.cmd +0 -1
- data/spec/integration/shell/group/group_0.stdout +0 -32
- data/spec/integration/shell/group/group_1.cmd +0 -1
- data/spec/integration/shell/group/group_1.stdout +0 -32
- data/spec/integration/shell/help/help_1.cmd +0 -1
- data/spec/integration/shell/help/help_1.stdout +0 -24
- data/spec/integration/shell/intersect/intersect_0.cmd +0 -1
- data/spec/integration/shell/intersect/intersect_0.stdout +0 -9
- data/spec/integration/shell/join/join_0.cmd +0 -1
- data/spec/integration/shell/join/join_0.stdout +0 -16
- data/spec/integration/shell/matching/matching_0.cmd +0 -1
- data/spec/integration/shell/matching/matching_0.stdout +0 -8
- data/spec/integration/shell/minus/minus_0.cmd +0 -1
- data/spec/integration/shell/minus/minus_0.stdout +0 -4
- data/spec/integration/shell/not-matching/not-matching_0.cmd +0 -1
- data/spec/integration/shell/not-matching/not-matching_0.stdout +0 -5
- data/spec/integration/shell/project/project_0.cmd +0 -1
- data/spec/integration/shell/project/project_0.stdout +0 -9
- data/spec/integration/shell/project/project_1.cmd +0 -1
- data/spec/integration/shell/project/project_1.stdout +0 -9
- data/spec/integration/shell/quota/quota_0.cmd +0 -1
- data/spec/integration/shell/quota/quota_0.stdout +0 -16
- data/spec/integration/shell/rank/rank_1.cmd +0 -1
- data/spec/integration/shell/rank/rank_1.stdout +0 -10
- data/spec/integration/shell/rank/rank_2.cmd +0 -1
- data/spec/integration/shell/rank/rank_2.stdout +0 -10
- data/spec/integration/shell/rank/rank_3.cmd +0 -1
- data/spec/integration/shell/rank/rank_3.stdout +0 -10
- data/spec/integration/shell/rank/rank_4.cmd +0 -1
- data/spec/integration/shell/rank/rank_4.stdout +0 -6
- data/spec/integration/shell/rank/rank_5.cmd +0 -1
- data/spec/integration/shell/rank/rank_5.stdout +0 -6
- data/spec/integration/shell/rename/rename_0.cmd +0 -1
- data/spec/integration/shell/rename/rename_0.stdout +0 -9
- data/spec/integration/shell/restrict/restrict_0.cmd +0 -1
- data/spec/integration/shell/restrict/restrict_0.stdout +0 -6
- data/spec/integration/shell/restrict/restrict_1.cmd +0 -1
- data/spec/integration/shell/restrict/restrict_1.stdout +0 -6
- data/spec/integration/shell/show/show_base.cmd +0 -1
- data/spec/integration/shell/show/show_base.stdout +0 -9
- data/spec/integration/shell/show/show_base_sort_1.cmd +0 -1
- data/spec/integration/shell/show/show_base_sort_1.stdout +0 -9
- data/spec/integration/shell/show/show_base_sort_2.cmd +0 -1
- data/spec/integration/shell/show/show_base_sort_2.stdout +0 -9
- data/spec/integration/shell/show/show_conflictual.cmd +0 -1
- data/spec/integration/shell/show/show_conflictual.stdout +0 -5
- data/spec/integration/shell/show/show_csv.cmd +0 -1
- data/spec/integration/shell/show/show_csv.stdout +0 -6
- data/spec/integration/shell/show/show_ff.cmd +0 -1
- data/spec/integration/shell/show/show_ff.stdout +0 -10
- data/spec/integration/shell/show/show_rash.cmd +0 -1
- data/spec/integration/shell/show/show_rash.stdout +0 -5
- data/spec/integration/shell/show/show_rash_pretty.cmd +0 -1
- data/spec/integration/shell/show/show_rash_pretty.stdout +0 -30
- data/spec/integration/shell/show/show_yaml.cmd +0 -1
- data/spec/integration/shell/show/show_yaml.stdout +0 -22
- data/spec/integration/shell/sort/sort_0.cmd +0 -1
- data/spec/integration/shell/sort/sort_0.stdout +0 -9
- data/spec/integration/shell/sort/sort_1.cmd +0 -1
- data/spec/integration/shell/sort/sort_1.stdout +0 -9
- data/spec/integration/shell/sort/sort_2.cmd +0 -1
- data/spec/integration/shell/sort/sort_2.stdout +0 -9
- data/spec/integration/shell/sort/sort_3.cmd +0 -1
- data/spec/integration/shell/sort/sort_3.stdout +0 -9
- data/spec/integration/shell/summarize/summarize_0.cmd +0 -1
- data/spec/integration/shell/summarize/summarize_0.stdout +0 -8
- data/spec/integration/shell/ungroup/ungroup_0.cmd +0 -1
- data/spec/integration/shell/ungroup/ungroup_0.stdout +0 -16
- data/spec/integration/shell/union/union_0.cmd +0 -1
- data/spec/integration/shell/union/union_0.stdout +0 -9
- data/spec/integration/shell/unwrap/unwrap_0.cmd +0 -1
- data/spec/integration/shell/unwrap/unwrap_0.stdout +0 -9
- data/spec/integration/shell/wrap/wrap_0.cmd +0 -1
- data/spec/integration/shell/wrap/wrap_0.stdout +0 -9
- data/spec/integration/test_alf.rb +0 -34
- data/spec/integration/test_examples.rb +0 -15
- data/spec/integration/test_lispy.rb +0 -31
- data/spec/integration/test_semantics.rb +0 -40
- data/spec/integration/test_shell.rb +0 -47
- data/spec/regression/alf_file/__FILE__.alf +0 -2
- data/spec/regression/alf_file/suppliers.rash +0 -5
- data/spec/regression/alf_file/test___FILE__.rb +0 -17
- data/spec/regression/heading/test_heading_with_date.rb +0 -12
- data/spec/regression/lispy/test_compile.rb +0 -14
- data/spec/regression/logs/apache_combined.log +0 -5
- data/spec/regression/logs/test_path_attribute.rb +0 -25
- data/spec/regression/relation/test_relation_allbut_all.rb +0 -14
- data/spec/regression/relation/test_relation_with_date.rb +0 -12
- data/spec/regression/restrict/test_restrict_with_keywords.rb +0 -17
- data/spec/shared/a_valid_type_implementation.rb +0 -47
- data/spec/shared/a_value.rb +0 -12
- data/spec/shared/an_operator_class.rb +0 -36
- data/spec/unit/alf-core/aggregator/test_avg.rb +0 -22
- data/spec/unit/alf-core/aggregator/test_collect.rb +0 -25
- data/spec/unit/alf-core/aggregator/test_concat.rb +0 -31
- data/spec/unit/alf-core/aggregator/test_count.rb +0 -17
- data/spec/unit/alf-core/aggregator/test_max.rb +0 -23
- data/spec/unit/alf-core/aggregator/test_min.rb +0 -23
- data/spec/unit/alf-core/aggregator/test_stddev.rb +0 -27
- data/spec/unit/alf-core/aggregator/test_sum.rb +0 -23
- data/spec/unit/alf-core/aggregator/test_variance.rb +0 -29
- data/spec/unit/alf-core/assumptions/test_file.rb +0 -17
- data/spec/unit/alf-core/assumptions/test_instance_eval.rb +0 -15
- data/spec/unit/alf-core/assumptions/test_scoping.rb +0 -29
- data/spec/unit/alf-core/assumptions/test_set.rb +0 -64
- data/spec/unit/alf-core/environment/examples/suppliers.rash +0 -5
- data/spec/unit/alf-core/environment/test_folder.rb +0 -53
- data/spec/unit/alf-core/operator/non_relational/test_autonum.rb +0 -48
- data/spec/unit/alf-core/operator/non_relational/test_clip.rb +0 -35
- data/spec/unit/alf-core/operator/non_relational/test_coerce.rb +0 -29
- data/spec/unit/alf-core/operator/non_relational/test_compact.rb +0 -32
- data/spec/unit/alf-core/operator/non_relational/test_defaults.rb +0 -53
- data/spec/unit/alf-core/operator/non_relational/test_generator.rb +0 -60
- data/spec/unit/alf-core/operator/non_relational/test_sort.rb +0 -60
- data/spec/unit/alf-core/operator/relational/test_extend.rb +0 -28
- data/spec/unit/alf-core/operator/relational/test_group.rb +0 -39
- data/spec/unit/alf-core/operator/relational/test_heading.rb +0 -27
- data/spec/unit/alf-core/operator/relational/test_intersect.rb +0 -58
- data/spec/unit/alf-core/operator/relational/test_join.rb +0 -36
- data/spec/unit/alf-core/operator/relational/test_minus.rb +0 -56
- data/spec/unit/alf-core/operator/relational/test_project.rb +0 -62
- data/spec/unit/alf-core/operator/relational/test_quota.rb +0 -36
- data/spec/unit/alf-core/operator/relational/test_rank.rb +0 -48
- data/spec/unit/alf-core/operator/relational/test_rename.rb +0 -26
- data/spec/unit/alf-core/operator/relational/test_restrict.rb +0 -45
- data/spec/unit/alf-core/operator/relational/test_summarize.rb +0 -44
- data/spec/unit/alf-core/operator/relational/test_ungroup.rb +0 -29
- data/spec/unit/alf-core/operator/relational/test_union.rb +0 -35
- data/spec/unit/alf-core/operator/relational/test_unwrap.rb +0 -26
- data/spec/unit/alf-core/operator/relational/test_wrap.rb +0 -26
- data/spec/unit/alf-core/operator/signature/test_argv2args.rb +0 -82
- data/spec/unit/alf-core/operator/signature/test_collect_on.rb +0 -38
- data/spec/unit/alf-core/operator/signature/test_initialize.rb +0 -17
- data/spec/unit/alf-core/operator/signature/test_install.rb +0 -56
- data/spec/unit/alf-core/operator/signature/test_option_parser.rb +0 -36
- data/spec/unit/alf-core/operator/signature/test_parse_args.rb +0 -90
- data/spec/unit/alf-core/operator/signature/test_to_lispy.rb +0 -102
- data/spec/unit/alf-core/operator/signature/test_to_shell.rb +0 -103
- data/spec/unit/alf-core/operator/test_non_relational.rb +0 -20
- data/spec/unit/alf-core/operator/test_relational.rb +0 -31
- data/spec/unit/alf-core/reader/input.rb +0 -2
- data/spec/unit/alf-core/reader/test_alf_file.rb +0 -30
- data/spec/unit/alf-core/reader/test_initialize.rb +0 -60
- data/spec/unit/alf-core/reader/test_looks_a_path.rb +0 -20
- data/spec/unit/alf-core/reader/test_rash.rb +0 -31
- data/spec/unit/alf-core/relation/test_coerce.rb +0 -53
- data/spec/unit/alf-core/relation/test_inspect.rb +0 -20
- data/spec/unit/alf-core/relation/test_relops.rb +0 -55
- data/spec/unit/alf-core/relation/test_to_a.rb +0 -41
- data/spec/unit/alf-core/renderer/test_initialize.rb +0 -60
- data/spec/unit/alf-core/test_aggregator.rb +0 -58
- data/spec/unit/alf-core/test_environment.rb +0 -30
- data/spec/unit/alf-core/test_operator.rb +0 -16
- data/spec/unit/alf-core/test_reader.rb +0 -40
- data/spec/unit/alf-core/test_relation.rb +0 -75
- data/spec/unit/alf-core/test_renderer.rb +0 -53
- data/spec/unit/alf-core/text/test_cell.rb +0 -35
- data/spec/unit/alf-core/text/test_row.rb +0 -30
- data/spec/unit/alf-core/text/test_table.rb +0 -39
- data/spec/unit/alf-core/tools/test_class_name.rb +0 -16
- data/spec/unit/alf-core/tools/test_coalesce.rb +0 -19
- data/spec/unit/alf-core/tools/test_coerce.rb +0 -16
- data/spec/unit/alf-core/tools/test_ruby_case.rb +0 -16
- data/spec/unit/alf-core/tools/test_to_lispy.rb +0 -145
- data/spec/unit/alf-core/tools/test_to_relation.rb +0 -39
- data/spec/unit/alf-core/tools/test_to_ruby_literal.rb +0 -10
- data/spec/unit/alf-core/tools/test_tuple_handle.rb +0 -52
- data/spec/unit/alf-core/tools/test_tuple_heading.rb +0 -15
- data/spec/unit/alf-core/tools/test_varargs.rb +0 -19
- data/spec/unit/alf-core/types/test_attr_list.rb +0 -188
- data/spec/unit/alf-core/types/test_attr_name.rb +0 -78
- data/spec/unit/alf-core/types/test_boolean.rb +0 -42
- data/spec/unit/alf-core/types/test_class_methods.rb +0 -24
- data/spec/unit/alf-core/types/test_heading.rb +0 -146
- data/spec/unit/alf-core/types/test_ordering.rb +0 -185
- data/spec/unit/alf-core/types/test_renaming.rb +0 -72
- data/spec/unit/alf-core/types/test_size.rb +0 -74
- data/spec/unit/alf-core/types/test_summarization.rb +0 -95
- data/spec/unit/alf-core/types/test_tuple_computation.rb +0 -96
- data/spec/unit/alf-core/types/test_tuple_expression.rb +0 -122
- data/spec/unit/alf-core/types/test_tuple_predicate.rb +0 -108
- data/spec/unit/alf-csv/input.csv +0 -3
- data/spec/unit/alf-csv/test_reader.rb +0 -66
- data/spec/unit/alf-csv/test_renderer.rb +0 -73
- data/spec/unit/alf-engine/compact/test_set.rb +0 -33
- data/spec/unit/alf-engine/compact/test_uniq.rb +0 -33
- data/spec/unit/alf-engine/group/test_hash.rb +0 -34
- data/spec/unit/alf-engine/join/test_hash.rb +0 -55
- data/spec/unit/alf-engine/materialize/test_array.rb +0 -28
- data/spec/unit/alf-engine/materialize/test_hash.rb +0 -76
- data/spec/unit/alf-engine/quota/test_cesure.rb +0 -34
- data/spec/unit/alf-engine/rank/test_cesure.rb +0 -47
- data/spec/unit/alf-engine/semi/test_hash.rb +0 -58
- data/spec/unit/alf-engine/sort/test_in_memory.rb +0 -32
- data/spec/unit/alf-engine/summarize/test_cesure.rb +0 -36
- data/spec/unit/alf-engine/summarize/test_hash.rb +0 -36
- data/spec/unit/alf-engine/test_aggregate.rb +0 -26
- data/spec/unit/alf-engine/test_autonum.rb +0 -24
- data/spec/unit/alf-engine/test_clip.rb +0 -34
- data/spec/unit/alf-engine/test_coerce.rb +0 -35
- data/spec/unit/alf-engine/test_compact.rb +0 -33
- data/spec/unit/alf-engine/test_concat.rb +0 -38
- data/spec/unit/alf-engine/test_defaults.rb +0 -37
- data/spec/unit/alf-engine/test_filter.rb +0 -23
- data/spec/unit/alf-engine/test_generator.rb +0 -25
- data/spec/unit/alf-engine/test_rename.rb +0 -24
- data/spec/unit/alf-engine/test_set_attr.rb +0 -38
- data/spec/unit/alf-engine/test_sort.rb +0 -32
- data/spec/unit/alf-engine/test_ungroup.rb +0 -28
- data/spec/unit/alf-engine/test_unwrap.rb +0 -20
- data/spec/unit/alf-engine/test_wrap.rb +0 -26
- data/spec/unit/alf-logs/apache_combined.log +0 -5
- data/spec/unit/alf-logs/postgresql.log +0 -29
- data/spec/unit/alf-logs/test_reader.rb +0 -57
- data/spec/unit/alf-sequel/alf.db +0 -0
- data/spec/unit/alf-sequel/test_environment.rb +0 -74
- data/spec/unit/alf-shell/doc_manager/dynamic.md +0 -1
- data/spec/unit/alf-shell/doc_manager/example.md +0 -1
- data/spec/unit/alf-shell/doc_manager/example_1.txt +0 -11
- data/spec/unit/alf-shell/doc_manager/static.md +0 -1
- data/spec/unit/alf-shell/doc_manager/test_call.rb +0 -48
- data/spec/unit/alf-shell/main/test_class_methods.rb +0 -44
- data/spec/unit/alf-shell/operator/test_autonum.rb +0 -28
- data/spec/unit/alf-shell/operator/test_clip.rb +0 -29
- data/spec/unit/alf-shell/operator/test_coerce.rb +0 -21
- data/spec/unit/alf-shell/operator/test_compact.rb +0 -16
- data/spec/unit/alf-shell/operator/test_defaults.rb +0 -29
- data/spec/unit/alf-shell/operator/test_extend.rb +0 -21
- data/spec/unit/alf-shell/operator/test_generator.rb +0 -37
- data/spec/unit/alf-shell/operator/test_group.rb +0 -32
- data/spec/unit/alf-shell/operator/test_heading.rb +0 -16
- data/spec/unit/alf-shell/operator/test_intersect.rb +0 -18
- data/spec/unit/alf-shell/operator/test_join.rb +0 -18
- data/spec/unit/alf-shell/operator/test_matching.rb +0 -18
- data/spec/unit/alf-shell/operator/test_minus.rb +0 -18
- data/spec/unit/alf-shell/operator/test_not_matching.rb +0 -18
- data/spec/unit/alf-shell/operator/test_project.rb +0 -38
- data/spec/unit/alf-shell/operator/test_quota.rb +0 -23
- data/spec/unit/alf-shell/operator/test_rank.rb +0 -30
- data/spec/unit/alf-shell/operator/test_rename.rb +0 -21
- data/spec/unit/alf-shell/operator/test_restrict.rb +0 -35
- data/spec/unit/alf-shell/operator/test_sort.rb +0 -49
- data/spec/unit/alf-shell/operator/test_summarize.rb +0 -30
- data/spec/unit/alf-shell/operator/test_ungroup.rb +0 -28
- data/spec/unit/alf-shell/operator/test_union.rb +0 -18
- data/spec/unit/alf-shell/operator/test_unwrap.rb +0 -28
- data/spec/unit/alf-shell/operator/test_wrap.rb +0 -30
- data/tasks/clean.rake +0 -3
- data/tasks/debug_mail.rake +0 -75
- data/tasks/debug_mail.txt +0 -18
- data/tasks/gh-pages.rake +0 -68
- data/tasks/integration_test.rake +0 -43
- data/tasks/regression_test.rake +0 -44
- data/tasks/unit_test.rake +0 -44
- data/tasks/yard.rake +0 -51
data/TODO.md
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
* RENAME: add prefix, suffix and lambda renaming
|
|
2
|
-
|
|
3
|
-
(rename :suppliers, [:name, :city], :prefix => "supplier_")
|
|
4
|
-
(rename :suppliers, [:name, :city], :suffix => "_sup")
|
|
5
|
-
(rename :suppliers, [:name, :city], lambda{|name| name.upcase})
|
|
6
|
-
|
|
7
|
-
* WRAP: provide a multi-wrapping ability?
|
|
8
|
-
|
|
9
|
-
(wrap (wrap :supplies, [:a, :b], :x), [:x, :c], :y)
|
|
10
|
-
=> (wrap :supplies, :x => [:a, :b], :y => [:x, :c])
|
|
11
|
-
|
|
12
|
-
But this would only work with Ruby 1.9 as the hash order would be important
|
|
13
|
-
as such
|
|
14
|
-
|
|
15
|
-
* GROUP: provide a multi-grouping ability?
|
|
16
|
-
|
|
17
|
-
Similar to wrap, with same limitation.
|
|
18
|
-
|
|
19
|
-
* Add PIVOT and UNPIVOT operators
|
|
20
|
-
|
|
21
|
-
* Find a way to complete the description of Quota...
|
data/bin/alf
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
module AlfLauncher
|
|
3
|
-
|
|
4
|
-
def self.lib
|
|
5
|
-
File.expand_path('../../lib', __FILE__)
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
def self.load
|
|
9
|
-
begin
|
|
10
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
11
|
-
require "alf"
|
|
12
|
-
rescue LoadError => ex
|
|
13
|
-
require "rubygems"
|
|
14
|
-
require "alf"
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def self.start(argv)
|
|
19
|
-
load
|
|
20
|
-
if ENV["ALF_OPTS"]
|
|
21
|
-
argv = Quickl.parse_commandline_args(ENV["ALF_OPTS"]) + argv
|
|
22
|
-
end
|
|
23
|
-
Alf::Shell::Main.run(argv, __FILE__)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
end # module AlfLaucher
|
|
27
|
-
AlfLauncher.start(ARGV)
|
data/doc/commands/exec.md
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
Executes an .alf file on current environment
|
|
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 environment.
|
|
16
|
-
|
data/doc/commands/help.md
DELETED
data/doc/commands/main.md
DELETED
|
@@ -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
|
-
|
data/doc/commands/show.md
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
Output input tuples through a specific renderer (text, yaml, ...)
|
|
3
|
-
|
|
4
|
-
SYNOPSIS
|
|
5
|
-
|
|
6
|
-
alf #(command_name) DATASET -- [ORDERING]
|
|
7
|
-
|
|
8
|
-
OPTIONS
|
|
9
|
-
|
|
10
|
-
#(summarized_options)
|
|
11
|
-
|
|
12
|
-
DESCRIPTION
|
|
13
|
-
|
|
14
|
-
When a dataset name is specified as commandline arg, request the
|
|
15
|
-
environment to provide this dataset and prints it. Otherwise, take what
|
|
16
|
-
comes on standard input.
|
|
17
|
-
|
|
18
|
-
Note that this command is not an operator and should not be piped anymore.
|
|
19
|
-
|
|
@@ -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,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,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,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,20 +0,0 @@
|
|
|
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
|
-
|
|
@@ -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
|
-
|