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.
- data/Gemfile +6 -3
- data/Gemfile.lock +65 -19
- data/README.md +77 -183
- data/Rakefile +25 -0
- data/alf.gemspec +5 -3
- data/alf.noespec +8 -6
- data/lib/alf/loader.rb +1 -0
- data/lib/alf/version.rb +1 -1
- data/spec/facade/test_query.rb +12 -0
- data/spec/key-inference/queries.yml +10 -0
- data/spec/key-inference/test_all.rb +21 -0
- data/{test → spec}/migrations/test_folder_migration.rb +0 -0
- data/{test → spec}/migrations/test_sequel_migration.rb +1 -1
- data/spec/operators/ungroup/grouped.json +3 -0
- data/spec/operators/ungroup/test_on_json_content.rb +11 -0
- data/spec/operators/unwrap/test_on_json_content.rb +11 -0
- data/spec/operators/unwrap/wrapped.json +3 -0
- data/spec/optimizer/project/extend.yml +20 -0
- data/spec/optimizer/project/intersect.yml +10 -0
- data/spec/optimizer/project/join.yml +20 -0
- data/spec/optimizer/project/matching.yml +21 -0
- data/spec/optimizer/project/minus.yml +9 -0
- data/spec/optimizer/project/not_matching.yml +21 -0
- data/spec/optimizer/project/project.yml +88 -0
- data/spec/optimizer/project/rename.yml +30 -0
- data/spec/optimizer/project/sort.yml +45 -0
- data/spec/optimizer/project/union.yml +8 -0
- data/spec/optimizer/restrict/clip.yml +4 -0
- data/spec/optimizer/restrict/compact.yml +4 -0
- data/spec/optimizer/restrict/generator.yml +4 -0
- data/spec/optimizer/restrict/intersect.yml +4 -0
- data/spec/optimizer/restrict/leaf_operand.yml +4 -0
- data/spec/optimizer/restrict/minus.yml +4 -0
- data/spec/optimizer/restrict/page.yml +12 -0
- data/spec/optimizer/restrict/project.yml +4 -0
- data/spec/optimizer/restrict/sort.yml +4 -0
- data/spec/optimizer/restrict/union.yml +4 -0
- data/spec/optimizer/test_all.rb +34 -0
- data/spec/sql/helpers.rb +25 -0
- data/spec/sql/queries/01-leaf-operand.yml +5 -0
- data/spec/sql/queries/02-clip.yml +12 -0
- data/spec/sql/queries/03-sort.yml +58 -0
- data/spec/sql/queries/04-frame.yml +57 -0
- data/spec/sql/queries/05-intersect.yml +23 -0
- data/spec/sql/queries/06-join.yml +207 -0
- data/spec/sql/queries/07-matching.yml +76 -0
- data/spec/sql/queries/08-minus.yml +23 -0
- data/spec/sql/queries/09-not-matching.yml +57 -0
- data/spec/sql/queries/10-page.yml +31 -0
- data/spec/sql/queries/11-project.yml +48 -0
- data/spec/sql/queries/12-rename.yml +24 -0
- data/spec/sql/queries/13-restrict.yml +114 -0
- data/spec/sql/queries/15-union.yml +90 -0
- data/spec/sql/queries/16-wrap.yml +3 -0
- data/spec/sql/queries/91-reuse.yml +28 -0
- data/spec/sql/test_sequel_compiler.rb +41 -0
- data/spec/sql/test_sql_compiler.rb +52 -0
- data/{test → spec}/test_alf.rb +0 -0
- data/spec/test_helpers.rb +54 -0
- data/tasks/doc.rake +10 -0
- data/tasks/fixtures.rake +52 -0
- data/tasks/mod.rake +50 -0
- data/tasks/release.rake +34 -0
- data/tasks/test.rake +2 -2
- metadata +150 -19
- data/test/seeding/test_seeding.rb +0 -49
- data/test/test_helpers.rb +0 -24
@@ -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
|
data/{test → spec}/test_alf.rb
RENAMED
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
data/tasks/fixtures.rake
ADDED
@@ -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
|
data/tasks/release.rake
ADDED
@@ -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 = "
|
5
|
-
t.rspec_opts = ["--color", "--backtrace", "-Ilib", "-
|
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.
|
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-
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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:
|
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
|
-
-
|
153
|
-
-
|
154
|
-
-
|
155
|
-
-
|
156
|
-
-
|
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
|