alf 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 (67) hide show
  1. data/Gemfile +6 -3
  2. data/Gemfile.lock +65 -19
  3. data/README.md +77 -183
  4. data/Rakefile +25 -0
  5. data/alf.gemspec +5 -3
  6. data/alf.noespec +8 -6
  7. data/lib/alf/loader.rb +1 -0
  8. data/lib/alf/version.rb +1 -1
  9. data/spec/facade/test_query.rb +12 -0
  10. data/spec/key-inference/queries.yml +10 -0
  11. data/spec/key-inference/test_all.rb +21 -0
  12. data/{test → spec}/migrations/test_folder_migration.rb +0 -0
  13. data/{test → spec}/migrations/test_sequel_migration.rb +1 -1
  14. data/spec/operators/ungroup/grouped.json +3 -0
  15. data/spec/operators/ungroup/test_on_json_content.rb +11 -0
  16. data/spec/operators/unwrap/test_on_json_content.rb +11 -0
  17. data/spec/operators/unwrap/wrapped.json +3 -0
  18. data/spec/optimizer/project/extend.yml +20 -0
  19. data/spec/optimizer/project/intersect.yml +10 -0
  20. data/spec/optimizer/project/join.yml +20 -0
  21. data/spec/optimizer/project/matching.yml +21 -0
  22. data/spec/optimizer/project/minus.yml +9 -0
  23. data/spec/optimizer/project/not_matching.yml +21 -0
  24. data/spec/optimizer/project/project.yml +88 -0
  25. data/spec/optimizer/project/rename.yml +30 -0
  26. data/spec/optimizer/project/sort.yml +45 -0
  27. data/spec/optimizer/project/union.yml +8 -0
  28. data/spec/optimizer/restrict/clip.yml +4 -0
  29. data/spec/optimizer/restrict/compact.yml +4 -0
  30. data/spec/optimizer/restrict/generator.yml +4 -0
  31. data/spec/optimizer/restrict/intersect.yml +4 -0
  32. data/spec/optimizer/restrict/leaf_operand.yml +4 -0
  33. data/spec/optimizer/restrict/minus.yml +4 -0
  34. data/spec/optimizer/restrict/page.yml +12 -0
  35. data/spec/optimizer/restrict/project.yml +4 -0
  36. data/spec/optimizer/restrict/sort.yml +4 -0
  37. data/spec/optimizer/restrict/union.yml +4 -0
  38. data/spec/optimizer/test_all.rb +34 -0
  39. data/spec/sql/helpers.rb +25 -0
  40. data/spec/sql/queries/01-leaf-operand.yml +5 -0
  41. data/spec/sql/queries/02-clip.yml +12 -0
  42. data/spec/sql/queries/03-sort.yml +58 -0
  43. data/spec/sql/queries/04-frame.yml +57 -0
  44. data/spec/sql/queries/05-intersect.yml +23 -0
  45. data/spec/sql/queries/06-join.yml +207 -0
  46. data/spec/sql/queries/07-matching.yml +76 -0
  47. data/spec/sql/queries/08-minus.yml +23 -0
  48. data/spec/sql/queries/09-not-matching.yml +57 -0
  49. data/spec/sql/queries/10-page.yml +31 -0
  50. data/spec/sql/queries/11-project.yml +48 -0
  51. data/spec/sql/queries/12-rename.yml +24 -0
  52. data/spec/sql/queries/13-restrict.yml +114 -0
  53. data/spec/sql/queries/15-union.yml +90 -0
  54. data/spec/sql/queries/16-wrap.yml +3 -0
  55. data/spec/sql/queries/91-reuse.yml +28 -0
  56. data/spec/sql/test_sequel_compiler.rb +41 -0
  57. data/spec/sql/test_sql_compiler.rb +52 -0
  58. data/{test → spec}/test_alf.rb +0 -0
  59. data/spec/test_helpers.rb +54 -0
  60. data/tasks/doc.rake +10 -0
  61. data/tasks/fixtures.rake +52 -0
  62. data/tasks/mod.rake +50 -0
  63. data/tasks/release.rake +34 -0
  64. data/tasks/test.rake +2 -2
  65. metadata +150 -19
  66. data/test/seeding/test_seeding.rb +0 -49
  67. data/test/test_helpers.rb +0 -24
@@ -0,0 +1,3 @@
1
+ - alf: |-
2
+ wrap(suppliers, [:name, :city, :status], :attributes)
3
+ sql: ~
@@ -0,0 +1,28 @@
1
+ # reusing base case
2
+ - alf: |-
3
+ union(
4
+ matching(suppliers_in_paris, cities),
5
+ not_matching(suppliers_in_paris, cities))
6
+ sql: |-
7
+ (SELECT t1.sid, t1.name, t1.status, t1.city
8
+ FROM suppliers AS t1
9
+ WHERE t1.city = 'Paris'
10
+ AND t1.city IN (SELECT t2.city FROM cities AS t2))
11
+ UNION
12
+ (SELECT t3.sid, t3.name, t3.status, t3.city
13
+ FROM suppliers AS t3
14
+ WHERE t3.city = 'Paris'
15
+ AND NOT(t3.city IN (SELECT t4.city FROM cities AS t4)))
16
+ sql: |-
17
+ WITH t2 AS (
18
+ SELECT t1.sid, t1.name, t1.status, t1.city
19
+ FROM suppliers AS t1
20
+ WHERE t1.city = 'Paris'
21
+ )
22
+ (SELECT t2.sid, t2.name, t2.status, t2.city
23
+ FROM t2 AS t2
24
+ WHERE t2.city IN (SELECT t3.city FROM cities AS t3))
25
+ UNION
26
+ (SELECT t4.sid, t4.name, t4.status, t4.city
27
+ FROM t2 AS t4
28
+ WHERE NOT(t4.city IN (SELECT t5.city FROM cities AS t5)))
@@ -0,0 +1,41 @@
1
+ require_relative 'helpers'
2
+ module Alf
3
+ module Sequel
4
+ describe Compiler do
5
+
6
+ def compiler
7
+ @compiler ||= Compiler.new
8
+ end
9
+
10
+ subject{ compiler.call(expr) }
11
+
12
+ each_query do |query|
13
+ context "Sequel-based SQL compilation of '#{query}'" do
14
+ let(:expr){ conn.parse(query['alf']) }
15
+
16
+ it 'to_cog should lead to a Sequel::Cog' do
17
+ expr.to_cog.should be_a(Cog)
18
+ end if query['sql']
19
+
20
+ it 'sexpr.to_sql should be valid SQL for the DBMS considered' do
21
+ begin
22
+ sql = expr.to_cog.sexpr.to_sql
23
+ adapter[sql].to_a
24
+ rescue => ex
25
+ $stderr.print('x')
26
+ # $stderr.puts strip(query['sql'])
27
+ # $stderr.puts ex.message
28
+ end
29
+ end if query['sql']
30
+
31
+ it 'to_cog.to_a should run without problem' do
32
+ lambda{
33
+ expr.to_cog.to_a
34
+ }.should_not(raise_error)
35
+ end
36
+ end
37
+ end
38
+
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,52 @@
1
+ require_relative 'helpers'
2
+ module Alf
3
+ module Sql
4
+ describe Compiler do
5
+
6
+ shared_examples_for "a SQL compiled" do
7
+
8
+ it{ should be_a(Alf::Sql::Cog) }
9
+
10
+ it 'has correct traceability' do
11
+ subject.expr.should be(expr)
12
+ end
13
+
14
+ it 'has correct compiler' do
15
+ subject.compiler.should be(compiler)
16
+ end
17
+
18
+ end
19
+
20
+ def compiler
21
+ @compiler ||= Compiler.new
22
+ end
23
+
24
+ subject{ compiler.call(expr) }
25
+
26
+ each_query do |query|
27
+ next unless query['sql']
28
+
29
+ describe "SQL compilation of '#{query}'" do
30
+ let(:expr){ conn.parse(query['alf']) }
31
+
32
+ it_should_behave_like "a SQL compiled"
33
+
34
+ it 'should have expected SQL' do
35
+ strip(subject.to_sql).should eq(strip(query['sql']))
36
+ end
37
+
38
+ it 'should lead a flattenable result' do
39
+ sexpr = subject.sexpr
40
+ flattened = Processor::Flatten.new(Builder.new).call(sexpr)
41
+ if sexpr.first == :with_exp
42
+ flattened.first.should eq(sexpr.select_exp.first)
43
+ else
44
+ flattened.should eq(sexpr)
45
+ end
46
+ end
47
+ end
48
+ end
49
+
50
+ end
51
+ end
52
+ end
File without changes
@@ -0,0 +1,54 @@
1
+ require 'alf'
2
+ require 'rspec'
3
+ require 'sap'
4
+
5
+ ENV['DATABASE'] ||= 'postgres'
6
+
7
+ FIXTURES_FOLDER = Path.backfind('fixtures')
8
+
9
+ class Adapters
10
+
11
+ def fake
12
+ @fake ||= Alf.examples_adapter
13
+ end
14
+
15
+ def sqlite
16
+ @sqlite ||= begin
17
+ url = FIXTURES_FOLDER/"suppliers-and-parts/suppliers-and-parts.db"
18
+ Alf::Sequel::Adapter.sequel_db(url)
19
+ end
20
+ end
21
+
22
+ def postgres
23
+ @postgres ||= begin
24
+ url = "postgres://alf@localhost/suppliers_and_parts"
25
+ Alf::Sequel::Adapter.sequel_db(url)
26
+ end
27
+ end
28
+
29
+ end
30
+ ADAPTERS = Adapters.new
31
+
32
+ module AlfIntegrationHelpers
33
+
34
+ def fixtures_folder
35
+ FIXTURES_FOLDER
36
+ end
37
+
38
+ def adapter
39
+ ADAPTERS.send ENV['DATABASE']
40
+ end
41
+
42
+ def db
43
+ @db ||= Alf::Database.new(adapter, viewpoint: Sap::Views[])
44
+ end
45
+
46
+ def conn
47
+ @conn ||= db.connection
48
+ end
49
+
50
+ end
51
+
52
+ RSpec.configure do |c|
53
+ c.include(AlfIntegrationHelpers)
54
+ end
data/tasks/doc.rake ADDED
@@ -0,0 +1,10 @@
1
+ desc "Ensure documentation is synchronized"
2
+ task :doc do
3
+ ["alf-doc", "alf-shell", "../try-alf"].each do |dir|
4
+ clean_env do
5
+ chdir(dir) do
6
+ system("rake doc")
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,52 @@
1
+ namespace :fixtures do
2
+
3
+ task :sap do
4
+ require 'alf'
5
+ require 'alf-sequel'
6
+ adapter = Path.dir/"../fixtures/suppliers-and-parts/suppliers-and-parts.db"
7
+ adapter.unlink
8
+ adapter = Alf::Adapter.sequel("sqlite://#{adapter}")
9
+ options = {
10
+ migrations_folder: Path.dir/"../fixtures/suppliers-and-parts/migrations"
11
+ }
12
+ Alf.connect(adapter, options) do |conn|
13
+ conn.migrate!
14
+ conn.relvar(:suppliers).affect([
15
+ {:sid => 'S1', :name => 'Smith', :status => 20, :city => 'London'},
16
+ {:sid => 'S2', :name => 'Jones', :status => 10, :city => 'Paris'},
17
+ {:sid => 'S3', :name => 'Blake', :status => 30, :city => 'Paris'},
18
+ {:sid => 'S4', :name => 'Clark', :status => 20, :city => 'London'},
19
+ {:sid => 'S5', :name => 'Adams', :status => 30, :city => 'Athens'}
20
+ ])
21
+ conn.relvar(:parts).affect([
22
+ {:pid => 'P1', :name => 'Nut', :color => 'Red', :weight => 12.0, :city => 'London'},
23
+ {:pid => 'P2', :name => 'Bolt', :color => 'Green', :weight => 17.0, :city => 'Paris'},
24
+ {:pid => 'P3', :name => 'Screw', :color => 'Blue', :weight => 17.0, :city => 'Oslo'},
25
+ {:pid => 'P4', :name => 'Screw', :color => 'Red', :weight => 14.0, :city => 'London'},
26
+ {:pid => 'P5', :name => 'Cam', :color => 'Blue', :weight => 12.0, :city => 'Paris'},
27
+ {:pid => 'P6', :name => 'Cog', :color => 'Red', :weight => 19.0, :city => 'London'}
28
+ ])
29
+ conn.relvar(:supplies).affect([
30
+ {:sid => 'S1', :pid => 'P1', :qty => 300},
31
+ {:sid => 'S1', :pid => 'P2', :qty => 200},
32
+ {:sid => 'S1', :pid => 'P3', :qty => 400},
33
+ {:sid => 'S1', :pid => 'P4', :qty => 200},
34
+ {:sid => 'S1', :pid => 'P5', :qty => 100},
35
+ {:sid => 'S1', :pid => 'P6', :qty => 100},
36
+ {:sid => 'S2', :pid => 'P1', :qty => 300},
37
+ {:sid => 'S2', :pid => 'P2', :qty => 400},
38
+ {:sid => 'S3', :pid => 'P2', :qty => 200},
39
+ {:sid => 'S4', :pid => 'P2', :qty => 200},
40
+ {:sid => 'S4', :pid => 'P4', :qty => 300},
41
+ {:sid => 'S4', :pid => 'P5', :qty => 400}
42
+ ])
43
+ conn.relvar(:cities).affect([
44
+ {:city => 'London', :country => 'England'},
45
+ {:city => 'Paris', :country => 'France'},
46
+ {:city => 'Athens', :country => 'Greece'},
47
+ {:city => 'Brussels', :country => 'Belgium'}
48
+ ])
49
+ end
50
+ end
51
+
52
+ end
data/tasks/mod.rake ADDED
@@ -0,0 +1,50 @@
1
+ namespace :mod do
2
+
3
+ desc "Initialize sub-modules"
4
+ task :init do
5
+ `git submodule init`
6
+ end
7
+
8
+ desc "Update sub-modules"
9
+ task :update do
10
+ `git submodule update`
11
+ end
12
+
13
+ desc "Pull from origin on every sub-modules"
14
+ task :pull do
15
+ in_each_sub_module("Refreshing") do |sub|
16
+ system "git pull origin"
17
+ end
18
+ end
19
+
20
+ desc "Push to origin on every sub-modules"
21
+ task :push do
22
+ in_each_sub_module("Pushing") do |sub|
23
+ system "git push origin"
24
+ end
25
+ end
26
+
27
+ desc "Run bundle-update on each submodule"
28
+ task :"bundle-update" do
29
+ in_each_sub_module("'bundle update' in") do |sub|
30
+ system "bundle update"
31
+ system "BUNDLE_GEMFILE=Gemfile.ci bundle update"
32
+ end
33
+ end
34
+
35
+ desc "Run bundle-install on each submodule"
36
+ task :bundle do
37
+ in_each_sub_module("'bundle install' in") do |sub|
38
+ system "bundle install"
39
+ system "BUNDLE_GEMFILE=Gemfile.ci bundle install"
40
+ end
41
+ end
42
+
43
+ desc "Test sub-modules"
44
+ task :test do
45
+ in_each_sub_module("Test") do |sub|
46
+ system "bundle exec rake"
47
+ end
48
+ end
49
+
50
+ end
@@ -0,0 +1,34 @@
1
+ namespace :release do
2
+
3
+ desc "Create all gems, including in sub-modules"
4
+ task :gem do
5
+ cmd = "rm -rf pkg && rake gem"
6
+ in_each_sub_module("'rake gem' in") do |sub|
7
+ system(cmd)
8
+ end
9
+ system(cmd)
10
+ end
11
+
12
+ desc "Try the release by installing all gems locally"
13
+ task :try => :gem do
14
+ cmd = "gem install --no-rdoc --no-ri --local pkg/*.gem"
15
+ in_each_sub_module("'gem install' in") do |sub|
16
+ system(cmd)
17
+ end
18
+ system(cmd)
19
+ end
20
+
21
+ desc "Release it!"
22
+ task :go => :gem do
23
+ require 'alf/version'
24
+ version = Alf::VERSION
25
+ cmd = "gem push pkg/*.gem && git tag v#{version} && git push origin --tags"
26
+ in_each_sub_module("'gem push & git tag' in") do |sub|
27
+ system(cmd)
28
+ end
29
+ system(cmd)
30
+ end
31
+
32
+ end
33
+ desc "Release alf"
34
+ task :release => :"release:go"
data/tasks/test.rake CHANGED
@@ -1,6 +1,6 @@
1
1
  require "rspec/core/rake_task"
2
2
  desc "Run rspec integration tests"
3
3
  RSpec::Core::RakeTask.new(:test) do |t|
4
- t.pattern = "test/**/test_*.rb"
5
- t.rspec_opts = ["--color", "--backtrace", "-Ilib", "-Itest"]
4
+ t.pattern = "spec/**/test_*.rb"
5
+ t.rspec_opts = ["--color", "--backtrace", "-Ilib", "-Ispec", "-Ifixtures/suppliers-and-parts/lib"]
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.0
4
+ version: 0.15.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-10-01 00:00:00.000000000 Z
12
+ date: 2013-10-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -50,7 +50,7 @@ dependencies:
50
50
  requirements:
51
51
  - - ~>
52
52
  - !ruby/object:Gem::Version
53
- version: 0.14.0
53
+ version: 0.15.0
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,7 +58,23 @@ dependencies:
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: 0.14.0
61
+ version: 0.15.0
62
+ - !ruby/object:Gem::Dependency
63
+ name: alf-sql
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 0.15.0
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 0.15.0
62
78
  - !ruby/object:Gem::Dependency
63
79
  name: alf-sequel
64
80
  requirement: !ruby/object:Gem::Requirement
@@ -66,7 +82,7 @@ dependencies:
66
82
  requirements:
67
83
  - - ~>
68
84
  - !ruby/object:Gem::Version
69
- version: 0.14.0
85
+ version: 0.15.0
70
86
  type: :runtime
71
87
  prerelease: false
72
88
  version_requirements: !ruby/object:Gem::Requirement
@@ -74,7 +90,7 @@ dependencies:
74
90
  requirements:
75
91
  - - ~>
76
92
  - !ruby/object:Gem::Version
77
- version: 0.14.0
93
+ version: 0.15.0
78
94
  - !ruby/object:Gem::Dependency
79
95
  name: alf-shell
80
96
  requirement: !ruby/object:Gem::Requirement
@@ -82,7 +98,23 @@ dependencies:
82
98
  requirements:
83
99
  - - ~>
84
100
  - !ruby/object:Gem::Version
85
- version: 0.14.0
101
+ version: 0.15.0
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 0.15.0
110
+ - !ruby/object:Gem::Dependency
111
+ name: alf-rack
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: 0.15.0
86
118
  type: :runtime
87
119
  prerelease: false
88
120
  version_requirements: !ruby/object:Gem::Requirement
@@ -90,7 +122,7 @@ dependencies:
90
122
  requirements:
91
123
  - - ~>
92
124
  - !ruby/object:Gem::Version
93
- version: 0.14.0
125
+ version: 0.15.0
94
126
  description: Alf brings a beautiful yet powerful relational algebra to the Shell and
95
127
  to Ruby.
96
128
  email:
@@ -114,13 +146,63 @@ files:
114
146
  - Manifest.txt
115
147
  - Rakefile
116
148
  - README.md
149
+ - spec/facade/test_query.rb
150
+ - spec/key-inference/queries.yml
151
+ - spec/key-inference/test_all.rb
152
+ - spec/migrations/test_folder_migration.rb
153
+ - spec/migrations/test_sequel_migration.rb
154
+ - spec/operators/ungroup/grouped.json
155
+ - spec/operators/ungroup/test_on_json_content.rb
156
+ - spec/operators/unwrap/test_on_json_content.rb
157
+ - spec/operators/unwrap/wrapped.json
158
+ - spec/optimizer/project/extend.yml
159
+ - spec/optimizer/project/intersect.yml
160
+ - spec/optimizer/project/join.yml
161
+ - spec/optimizer/project/matching.yml
162
+ - spec/optimizer/project/minus.yml
163
+ - spec/optimizer/project/not_matching.yml
164
+ - spec/optimizer/project/project.yml
165
+ - spec/optimizer/project/rename.yml
166
+ - spec/optimizer/project/sort.yml
167
+ - spec/optimizer/project/union.yml
168
+ - spec/optimizer/restrict/clip.yml
169
+ - spec/optimizer/restrict/compact.yml
170
+ - spec/optimizer/restrict/generator.yml
171
+ - spec/optimizer/restrict/intersect.yml
172
+ - spec/optimizer/restrict/leaf_operand.yml
173
+ - spec/optimizer/restrict/minus.yml
174
+ - spec/optimizer/restrict/page.yml
175
+ - spec/optimizer/restrict/project.yml
176
+ - spec/optimizer/restrict/sort.yml
177
+ - spec/optimizer/restrict/union.yml
178
+ - spec/optimizer/test_all.rb
179
+ - spec/sql/helpers.rb
180
+ - spec/sql/queries/01-leaf-operand.yml
181
+ - spec/sql/queries/02-clip.yml
182
+ - spec/sql/queries/03-sort.yml
183
+ - spec/sql/queries/04-frame.yml
184
+ - spec/sql/queries/05-intersect.yml
185
+ - spec/sql/queries/06-join.yml
186
+ - spec/sql/queries/07-matching.yml
187
+ - spec/sql/queries/08-minus.yml
188
+ - spec/sql/queries/09-not-matching.yml
189
+ - spec/sql/queries/10-page.yml
190
+ - spec/sql/queries/11-project.yml
191
+ - spec/sql/queries/12-rename.yml
192
+ - spec/sql/queries/13-restrict.yml
193
+ - spec/sql/queries/15-union.yml
194
+ - spec/sql/queries/16-wrap.yml
195
+ - spec/sql/queries/91-reuse.yml
196
+ - spec/sql/test_sequel_compiler.rb
197
+ - spec/sql/test_sql_compiler.rb
198
+ - spec/test_alf.rb
199
+ - spec/test_helpers.rb
200
+ - tasks/doc.rake
201
+ - tasks/fixtures.rake
117
202
  - tasks/gem.rake
203
+ - tasks/mod.rake
204
+ - tasks/release.rake
118
205
  - tasks/test.rake
119
- - test/migrations/test_folder_migration.rb
120
- - test/migrations/test_sequel_migration.rb
121
- - test/seeding/test_seeding.rb
122
- - test/test_alf.rb
123
- - test/test_helpers.rb
124
206
  homepage: http://blambeau.github.com/alf
125
207
  licenses: []
126
208
  post_install_message:
@@ -135,13 +217,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
135
217
  version: '0'
136
218
  segments:
137
219
  - 0
138
- hash: 3204366250414489882
220
+ hash: 825147625363283130
139
221
  required_rubygems_version: !ruby/object:Gem::Requirement
140
222
  none: false
141
223
  requirements:
142
224
  - - ! '>='
143
225
  - !ruby/object:Gem::Version
144
226
  version: '0'
227
+ segments:
228
+ - 0
229
+ hash: 825147625363283130
145
230
  requirements: []
146
231
  rubyforge_project:
147
232
  rubygems_version: 1.8.25
@@ -149,8 +234,54 @@ signing_key:
149
234
  specification_version: 3
150
235
  summary: Relational Algebra at your fingertips
151
236
  test_files:
152
- - test/migrations/test_folder_migration.rb
153
- - test/migrations/test_sequel_migration.rb
154
- - test/seeding/test_seeding.rb
155
- - test/test_alf.rb
156
- - test/test_helpers.rb
237
+ - spec/facade/test_query.rb
238
+ - spec/key-inference/queries.yml
239
+ - spec/key-inference/test_all.rb
240
+ - spec/migrations/test_folder_migration.rb
241
+ - spec/migrations/test_sequel_migration.rb
242
+ - spec/operators/ungroup/grouped.json
243
+ - spec/operators/ungroup/test_on_json_content.rb
244
+ - spec/operators/unwrap/test_on_json_content.rb
245
+ - spec/operators/unwrap/wrapped.json
246
+ - spec/optimizer/project/extend.yml
247
+ - spec/optimizer/project/intersect.yml
248
+ - spec/optimizer/project/join.yml
249
+ - spec/optimizer/project/matching.yml
250
+ - spec/optimizer/project/minus.yml
251
+ - spec/optimizer/project/not_matching.yml
252
+ - spec/optimizer/project/project.yml
253
+ - spec/optimizer/project/rename.yml
254
+ - spec/optimizer/project/sort.yml
255
+ - spec/optimizer/project/union.yml
256
+ - spec/optimizer/restrict/clip.yml
257
+ - spec/optimizer/restrict/compact.yml
258
+ - spec/optimizer/restrict/generator.yml
259
+ - spec/optimizer/restrict/intersect.yml
260
+ - spec/optimizer/restrict/leaf_operand.yml
261
+ - spec/optimizer/restrict/minus.yml
262
+ - spec/optimizer/restrict/page.yml
263
+ - spec/optimizer/restrict/project.yml
264
+ - spec/optimizer/restrict/sort.yml
265
+ - spec/optimizer/restrict/union.yml
266
+ - spec/optimizer/test_all.rb
267
+ - spec/sql/helpers.rb
268
+ - spec/sql/queries/01-leaf-operand.yml
269
+ - spec/sql/queries/02-clip.yml
270
+ - spec/sql/queries/03-sort.yml
271
+ - spec/sql/queries/04-frame.yml
272
+ - spec/sql/queries/05-intersect.yml
273
+ - spec/sql/queries/06-join.yml
274
+ - spec/sql/queries/07-matching.yml
275
+ - spec/sql/queries/08-minus.yml
276
+ - spec/sql/queries/09-not-matching.yml
277
+ - spec/sql/queries/10-page.yml
278
+ - spec/sql/queries/11-project.yml
279
+ - spec/sql/queries/12-rename.yml
280
+ - spec/sql/queries/13-restrict.yml
281
+ - spec/sql/queries/15-union.yml
282
+ - spec/sql/queries/16-wrap.yml
283
+ - spec/sql/queries/91-reuse.yml
284
+ - spec/sql/test_sequel_compiler.rb
285
+ - spec/sql/test_sql_compiler.rb
286
+ - spec/test_alf.rb
287
+ - spec/test_helpers.rb