axiom-sql-generator 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +6 -0
  3. data/.ruby-gemset +1 -0
  4. data/.travis.yml +17 -23
  5. data/CONTRIBUTING.md +1 -2
  6. data/Gemfile +10 -3
  7. data/Gemfile.devtools +39 -27
  8. data/README.md +5 -33
  9. data/axiom-sql-generator.gemspec +3 -5
  10. data/config/devtools.yml +2 -0
  11. data/config/flay.yml +1 -1
  12. data/config/reek.yml +1 -1
  13. data/config/rubocop.yml +59 -0
  14. data/lib/axiom/sql/generator/core_ext/date_time.rb +5 -6
  15. data/lib/axiom/sql/generator/direction.rb +4 -4
  16. data/lib/axiom/sql/generator/function/predicate.rb +1 -1
  17. data/lib/axiom/sql/generator/relation.rb +12 -11
  18. data/lib/axiom/sql/generator/relation/binary.rb +1 -1
  19. data/lib/axiom/sql/generator/relation/insertion.rb +1 -1
  20. data/lib/axiom/sql/generator/relation/unary.rb +20 -20
  21. data/lib/axiom/sql/generator/version.rb +1 -1
  22. data/lib/axiom/sql/generator/visitor.rb +3 -3
  23. data/spec/spec_helper.rb +11 -10
  24. data/spec/support/config_alias.rb +2 -0
  25. data/spec/unit/axiom/sql/generator/direction/{visit_axiom_relation_operation_order_ascending_spec.rb → visit_axiom_relation_operation_sorted_ascending_spec.rb} +2 -2
  26. data/spec/unit/axiom/sql/generator/direction/{visit_axiom_relation_operation_order_descending_spec.rb → visit_axiom_relation_operation_sorted_descending_spec.rb} +2 -2
  27. data/spec/unit/axiom/sql/generator/function/predicate/visit_axiom_function_predicate_exclusion_spec.rb +1 -1
  28. data/spec/unit/axiom/sql/generator/function/predicate/visit_axiom_function_predicate_inclusion_spec.rb +1 -1
  29. data/spec/unit/axiom/sql/generator/function/predicate/visit_axiom_function_predicate_inequality_spec.rb +3 -3
  30. data/spec/unit/axiom/sql/generator/literal/visit_enumerable_spec.rb +1 -1
  31. data/spec/unit/axiom/sql/generator/relation/binary/base/to_subquery_spec.rb +7 -7
  32. data/spec/unit/axiom/sql/generator/relation/binary/base/visit_axiom_relation_base_spec.rb +8 -8
  33. data/spec/unit/axiom/sql/generator/relation/binary/to_s_spec.rb +7 -7
  34. data/spec/unit/axiom/sql/generator/relation/binary/to_subquery_spec.rb +7 -7
  35. data/spec/unit/axiom/sql/generator/relation/binary/visit_axiom_algebra_join_spec.rb +20 -20
  36. data/spec/unit/axiom/sql/generator/relation/binary/visit_axiom_algebra_product_spec.rb +26 -26
  37. data/spec/unit/axiom/sql/generator/relation/class_methods/visit_spec.rb +10 -10
  38. data/spec/unit/axiom/sql/generator/relation/insertion/to_subquery_spec.rb +2 -2
  39. data/spec/unit/axiom/sql/generator/relation/insertion/visit_axiom_relation_operation_insertion_spec.rb +23 -23
  40. data/spec/unit/axiom/sql/generator/relation/materialized/visit_axiom_relation_materialized_spec.rb +3 -3
  41. data/spec/unit/axiom/sql/generator/relation/materialized/visited_spec.rb +2 -2
  42. data/spec/unit/axiom/sql/generator/relation/set/class_methods/normalize_operand_headers_spec.rb +5 -5
  43. data/spec/unit/axiom/sql/generator/relation/set/to_s_spec.rb +7 -7
  44. data/spec/unit/axiom/sql/generator/relation/set/to_subquery_spec.rb +7 -7
  45. data/spec/unit/axiom/sql/generator/relation/set/visit_axiom_algebra_difference_spec.rb +19 -19
  46. data/spec/unit/axiom/sql/generator/relation/set/visit_axiom_algebra_intersection_spec.rb +19 -19
  47. data/spec/unit/axiom/sql/generator/relation/set/visit_axiom_algebra_union_spec.rb +19 -19
  48. data/spec/unit/axiom/sql/generator/relation/to_s_spec.rb +9 -9
  49. data/spec/unit/axiom/sql/generator/relation/to_sql_spec.rb +8 -8
  50. data/spec/unit/axiom/sql/generator/relation/to_subquery_spec.rb +9 -9
  51. data/spec/unit/axiom/sql/generator/relation/unary/to_s_spec.rb +9 -9
  52. data/spec/unit/axiom/sql/generator/relation/unary/to_subquery_spec.rb +11 -11
  53. data/spec/unit/axiom/sql/generator/relation/unary/visit_axiom_algebra_extension_spec.rb +17 -17
  54. data/spec/unit/axiom/sql/generator/relation/unary/visit_axiom_algebra_projection_spec.rb +23 -23
  55. data/spec/unit/axiom/sql/generator/relation/unary/visit_axiom_algebra_rename_spec.rb +19 -19
  56. data/spec/unit/axiom/sql/generator/relation/unary/visit_axiom_algebra_restriction_spec.rb +22 -22
  57. data/spec/unit/axiom/sql/generator/relation/unary/visit_axiom_algebra_summarization_spec.rb +48 -48
  58. data/spec/unit/axiom/sql/generator/relation/unary/visit_axiom_relation_base_spec.rb +8 -8
  59. data/spec/unit/axiom/sql/generator/relation/unary/visit_axiom_relation_operation_limit_spec.rb +24 -24
  60. data/spec/unit/axiom/sql/generator/relation/unary/visit_axiom_relation_operation_offset_spec.rb +24 -24
  61. data/spec/unit/axiom/sql/generator/relation/unary/visit_axiom_relation_operation_reverse_spec.rb +26 -26
  62. data/spec/unit/axiom/sql/generator/relation/unary/{visit_axiom_relation_operation_order_spec.rb → visit_axiom_relation_operation_sorted_spec.rb} +28 -28
  63. data/spec/unit/axiom/sql/generator/relation/visit_spec.rb +3 -3
  64. data/spec/unit/axiom/sql/generator/relation/visited_spec.rb +7 -7
  65. data/spec/unit/axiom/sql/generator/visitor/visit_spec.rb +2 -2
  66. metadata +22 -41
  67. data/.rvmrc +0 -1
@@ -5,15 +5,15 @@ require 'spec_helper'
5
5
  describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_rename' do
6
6
  subject { object.visit_axiom_algebra_rename(rename) }
7
7
 
8
- let(:relation_name) { 'users' }
9
- let(:id) { Attribute::Integer.new(:id) }
10
- let(:name) { Attribute::String.new(:name) }
11
- let(:age) { Attribute::Integer.new(:age, :required => false) }
12
- let(:header) { [ id, name, age ] }
13
- let(:body) { [ [ 1, 'Dan Kubb', 35 ] ].each }
14
- let(:base_relation) { Relation::Base.new(relation_name, header, body) }
15
- let(:rename) { operand.rename(:id => :user_id) }
16
- let(:object) { described_class.new }
8
+ let(:relation_name) { 'users' }
9
+ let(:id) { Attribute::Integer.new(:id) }
10
+ let(:name) { Attribute::String.new(:name) }
11
+ let(:age) { Attribute::Integer.new(:age, required: false) }
12
+ let(:header) { [id, name, age] }
13
+ let(:body) { [[1, 'Dan Kubb', 35]].each }
14
+ let(:base_relation) { Relation::Base.new(relation_name, header, body) }
15
+ let(:rename) { operand.rename(id: :user_id) }
16
+ let(:object) { described_class.new }
17
17
 
18
18
  context 'when the operand is a base relation' do
19
19
  let(:operand) { base_relation }
@@ -25,7 +25,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_rename' do
25
25
  end
26
26
 
27
27
  context 'when the operand is a projection' do
28
- let(:operand) { base_relation.project([ :id, :name ]) }
28
+ let(:operand) { base_relation.project([:id, :name]) }
29
29
 
30
30
  it_should_behave_like 'a generated SQL SELECT query'
31
31
 
@@ -43,7 +43,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_rename' do
43
43
  end
44
44
 
45
45
  context 'when the operand is a rename' do
46
- let(:operand) { base_relation.rename(:name => :other_name) }
46
+ let(:operand) { base_relation.rename(name: :other_name) }
47
47
 
48
48
  context 'when the relation is not optimized' do
49
49
  it_should_behave_like 'a generated SQL SELECT query'
@@ -75,7 +75,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_rename' do
75
75
  context 'summarize per table dee' do
76
76
  let(:summarize_per) { TABLE_DEE }
77
77
  let(:operand) { base_relation.summarize(summarize_per) { |r| r.add(:count, r.id.count) } }
78
- let(:rename) { operand.rename(:count => :other_count) }
78
+ let(:rename) { operand.rename(count: :other_count) }
79
79
 
80
80
  it_should_behave_like 'a generated SQL SELECT query'
81
81
 
@@ -86,7 +86,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_rename' do
86
86
  context 'summarize per table dum' do
87
87
  let(:summarize_per) { TABLE_DUM }
88
88
  let(:operand) { base_relation.summarize(summarize_per) { |r| r.add(:count, r.id.count) } }
89
- let(:rename) { operand.rename(:count => :other_count) }
89
+ let(:rename) { operand.rename(count: :other_count) }
90
90
 
91
91
  it_should_behave_like 'a generated SQL SELECT query'
92
92
 
@@ -95,7 +95,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_rename' do
95
95
  end
96
96
 
97
97
  context 'summarize by a subset of the operand header' do
98
- let(:operand) { base_relation.summarize([ :id, :name ]) { |r| r.add(:count, r.age.count) } }
98
+ let(:operand) { base_relation.summarize([:id, :name]) { |r| r.add(:count, r.age.count) } }
99
99
 
100
100
  it_should_behave_like 'a generated SQL SELECT query'
101
101
 
@@ -104,8 +104,8 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_rename' do
104
104
  end
105
105
  end
106
106
 
107
- context 'when the operand is ordered' do
108
- let(:operand) { base_relation.sort_by { |r| [ r.id, r.name, r.age ] } }
107
+ context 'when the operand is sorted' do
108
+ let(:operand) { base_relation.sort_by { |r| [r.id, r.name, r.age] } }
109
109
 
110
110
  it_should_behave_like 'a generated SQL SELECT query'
111
111
 
@@ -114,7 +114,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_rename' do
114
114
  end
115
115
 
116
116
  context 'when the operand is reversed' do
117
- let(:operand) { base_relation.sort_by { |r| [ r.id, r.name, r.age ] }.reverse }
117
+ let(:operand) { base_relation.sort_by { |r| [r.id, r.name, r.age] }.reverse }
118
118
 
119
119
  it_should_behave_like 'a generated SQL SELECT query'
120
120
 
@@ -123,7 +123,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_rename' do
123
123
  end
124
124
 
125
125
  context 'when the operand is limited' do
126
- let(:operand) { base_relation.sort_by { |r| [ r.id, r.name, r.age ] }.take(1) }
126
+ let(:operand) { base_relation.sort_by { |r| [r.id, r.name, r.age] }.take(1) }
127
127
 
128
128
  it_should_behave_like 'a generated SQL SELECT query'
129
129
 
@@ -132,7 +132,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_rename' do
132
132
  end
133
133
 
134
134
  context 'when the operand is an offset' do
135
- let(:operand) { base_relation.sort_by { |r| [ r.id, r.name, r.age ] }.drop(1) }
135
+ let(:operand) { base_relation.sort_by { |r| [r.id, r.name, r.age] }.drop(1) }
136
136
 
137
137
  it_should_behave_like 'a generated SQL SELECT query'
138
138
 
@@ -5,15 +5,15 @@ require 'spec_helper'
5
5
  describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_restriction' do
6
6
  subject { object.visit_axiom_algebra_restriction(restriction) }
7
7
 
8
- let(:relation_name) { 'users' }
9
- let(:id) { Attribute::Integer.new(:id) }
10
- let(:name) { Attribute::String.new(:name) }
11
- let(:age) { Attribute::Integer.new(:age, :required => false) }
12
- let(:header) { [ id, name, age ] }
13
- let(:body) { [ [ 1, 'Dan Kubb', 35 ] ].each }
14
- let(:base_relation) { Relation::Base.new(relation_name, header, body) }
15
- let(:restriction) { operand.restrict { |r| r.id.eq(1) } }
16
- let(:object) { described_class.new }
8
+ let(:relation_name) { 'users' }
9
+ let(:id) { Attribute::Integer.new(:id) }
10
+ let(:name) { Attribute::String.new(:name) }
11
+ let(:age) { Attribute::Integer.new(:age, required: false) }
12
+ let(:header) { [id, name, age] }
13
+ let(:body) { [[1, 'Dan Kubb', 35]].each }
14
+ let(:base_relation) { Relation::Base.new(relation_name, header, body) }
15
+ let(:restriction) { operand.restrict { |r| r.id.eq(1) } }
16
+ let(:object) { described_class.new }
17
17
 
18
18
  context 'when the operand is a base relation' do
19
19
  let(:operand) { base_relation }
@@ -25,7 +25,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_restriction' do
25
25
  end
26
26
 
27
27
  context 'when the operand is a projection' do
28
- let(:operand) { base_relation.project([ :id, :name ]) }
28
+ let(:operand) { base_relation.project([:id, :name]) }
29
29
 
30
30
  it_should_behave_like 'a generated SQL SELECT query'
31
31
 
@@ -43,7 +43,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_restriction' do
43
43
  end
44
44
 
45
45
  context 'when the operand is a projection then a restriction' do
46
- let(:operand) { base_relation.project([ :id, :name ]).restrict { |r| r.id.ne(2) } }
46
+ let(:operand) { base_relation.project([:id, :name]).restrict { |r| r.id.ne(2) } }
47
47
 
48
48
  it_should_behave_like 'a generated SQL SELECT query'
49
49
 
@@ -52,8 +52,8 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_restriction' do
52
52
  end
53
53
 
54
54
  context 'when the operand is a projection then a restriction, followed by another restriction' do
55
- let(:tautology) { Function::Proposition::Tautology.instance }
56
- let(:operand) { base_relation.project([ :id, :name ]).restrict { tautology }.restrict { tautology } }
55
+ let(:tautology) { Function::Proposition::Tautology.instance }
56
+ let(:operand) { base_relation.project([:id, :name]).restrict { tautology }.restrict { tautology } }
57
57
 
58
58
  it_should_behave_like 'a generated SQL SELECT query'
59
59
 
@@ -63,7 +63,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_restriction' do
63
63
 
64
64
  context 'when the operand is a rename' do
65
65
  context 'when the restriction includes the renamed column' do
66
- let(:operand) { base_relation.rename(:id => :user_id) }
66
+ let(:operand) { base_relation.rename(id: :user_id) }
67
67
  let(:restriction) { operand.restrict { |r| r.user_id.eq(1) } }
68
68
 
69
69
  it_should_behave_like 'a generated SQL SELECT query'
@@ -73,8 +73,8 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_restriction' do
73
73
  end
74
74
 
75
75
  context 'when the restriction does not include the renamed column' do
76
- let(:operand) { base_relation.rename(:name => :other_name) }
77
- let(:restriction) { operand.restrict { |r| r.id.eq(1) } }
76
+ let(:operand) { base_relation.rename(name: :other_name) }
77
+ let(:restriction) { operand.restrict { |r| r.id.eq(1) } }
78
78
 
79
79
  it_should_behave_like 'a generated SQL SELECT query'
80
80
 
@@ -116,7 +116,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_restriction' do
116
116
  end
117
117
 
118
118
  context 'summarize by a subset of the operand header' do
119
- let(:operand) { base_relation.summarize([ :id, :name ]) { |r| r.add(:count, r.age.count) } }
119
+ let(:operand) { base_relation.summarize([:id, :name]) { |r| r.add(:count, r.age.count) } }
120
120
 
121
121
  it_should_behave_like 'a generated SQL SELECT query'
122
122
 
@@ -125,8 +125,8 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_restriction' do
125
125
  end
126
126
  end
127
127
 
128
- context 'when the operand is ordered' do
129
- let(:operand) { base_relation.sort_by { |r| [ r.id, r.name, r.age ] } }
128
+ context 'when the operand is sorted' do
129
+ let(:operand) { base_relation.sort_by { |r| [r.id, r.name, r.age] } }
130
130
 
131
131
  it_should_behave_like 'a generated SQL SELECT query'
132
132
 
@@ -135,7 +135,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_restriction' do
135
135
  end
136
136
 
137
137
  context 'when the operand is reversed' do
138
- let(:operand) { base_relation.sort_by { |r| [ r.id, r.name, r.age ] }.reverse }
138
+ let(:operand) { base_relation.sort_by { |r| [r.id, r.name, r.age] }.reverse }
139
139
 
140
140
  it_should_behave_like 'a generated SQL SELECT query'
141
141
 
@@ -144,7 +144,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_restriction' do
144
144
  end
145
145
 
146
146
  context 'when the operand is limited' do
147
- let(:operand) { base_relation.sort_by { |r| [ r.id, r.name, r.age ] }.take(1) }
147
+ let(:operand) { base_relation.sort_by { |r| [r.id, r.name, r.age] }.take(1) }
148
148
 
149
149
  it_should_behave_like 'a generated SQL SELECT query'
150
150
 
@@ -153,7 +153,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_restriction' do
153
153
  end
154
154
 
155
155
  context 'when the operand is an offset' do
156
- let(:operand) { base_relation.sort_by { |r| [ r.id, r.name, r.age ] }.drop(1) }
156
+ let(:operand) { base_relation.sort_by { |r| [r.id, r.name, r.age] }.drop(1) }
157
157
 
158
158
  it_should_behave_like 'a generated SQL SELECT query'
159
159
 
@@ -5,15 +5,15 @@ require 'spec_helper'
5
5
  describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' do
6
6
  subject { object.visit_axiom_algebra_summarization(summarization) }
7
7
 
8
- let(:relation_name) { 'users' }
9
- let(:id) { Attribute::Integer.new(:id) }
10
- let(:name) { Attribute::String.new(:name) }
11
- let(:age) { Attribute::Integer.new(:age, :required => false) }
12
- let(:header) { [ id, name, age ] }
13
- let(:body) { [ [ 1, 'Dan Kubb', 35 ] ].each }
14
- let(:base_relation) { Relation::Base.new(relation_name, header, body) }
15
- let(:other_relation) { Relation::Base.new('other', [ id ], [ [ 1 ] ]) }
16
- let(:object) { described_class.new }
8
+ let(:relation_name) { 'users' }
9
+ let(:id) { Attribute::Integer.new(:id) }
10
+ let(:name) { Attribute::String.new(:name) }
11
+ let(:age) { Attribute::Integer.new(:age, required: false) }
12
+ let(:header) { [id, name, age] }
13
+ let(:body) { [[1, 'Dan Kubb', 35]].each }
14
+ let(:base_relation) { Relation::Base.new(relation_name, header, body) }
15
+ let(:other_relation) { Relation::Base.new('other', [id], [[1]]) }
16
+ let(:object) { described_class.new }
17
17
 
18
18
  context 'summarize per table dee' do
19
19
  let(:summarize_per) { TABLE_DEE }
@@ -38,7 +38,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
38
38
  end
39
39
 
40
40
  context 'when the operand is a projection' do
41
- let(:operand) { base_relation.project([ :id, :name ]) }
41
+ let(:operand) { base_relation.project([:id, :name]) }
42
42
  let(:summarization) { operand.summarize(summarize_per) { |r| r.add(:count, r.id.count) } }
43
43
 
44
44
  it_should_behave_like 'a generated SQL SELECT query'
@@ -48,7 +48,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
48
48
  end
49
49
 
50
50
  context 'when the operand is a rename' do
51
- let(:operand) { base_relation.rename(:name => :other_name) }
51
+ let(:operand) { base_relation.rename(name: :other_name) }
52
52
 
53
53
  it_should_behave_like 'a generated SQL SELECT query'
54
54
 
@@ -66,7 +66,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
66
66
  end
67
67
 
68
68
  context 'when the operand is a summarization' do
69
- let(:operand) { base_relation.summarize([ :id ]) { |r| r.add(:count, r.age.count) } }
69
+ let(:operand) { base_relation.summarize([:id]) { |r| r.add(:count, r.age.count) } }
70
70
  let(:summarization) { operand.summarize(summarize_per) { |r| r.add(:count, r.count.count) } }
71
71
 
72
72
  it_should_behave_like 'a generated SQL SELECT query'
@@ -75,8 +75,8 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
75
75
  its(:to_subquery) { should eql('(SELECT COUNT ("count") AS "count" FROM (SELECT "id", COUNT ("age") AS "count" FROM "users" GROUP BY "id" HAVING COUNT (*) > 0) AS "users")') }
76
76
  end
77
77
 
78
- context 'when the operand is ordered' do
79
- let(:operand) { base_relation.sort_by { |r| [ r.id, r.name, r.age ] } }
78
+ context 'when the operand is sorted' do
79
+ let(:operand) { base_relation.sort_by { |r| [r.id, r.name, r.age] } }
80
80
 
81
81
  it_should_behave_like 'a generated SQL SELECT query'
82
82
 
@@ -85,7 +85,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
85
85
  end
86
86
 
87
87
  context 'when the operand is reversed' do
88
- let(:operand) { base_relation.sort_by { |r| [ r.id, r.name, r.age ] }.reverse }
88
+ let(:operand) { base_relation.sort_by { |r| [r.id, r.name, r.age] }.reverse }
89
89
 
90
90
  it_should_behave_like 'a generated SQL SELECT query'
91
91
 
@@ -94,7 +94,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
94
94
  end
95
95
 
96
96
  context 'when the operand is limited' do
97
- let(:operand) { base_relation.sort_by { |r| [ r.id, r.name, r.age ] }.take(1) }
97
+ let(:operand) { base_relation.sort_by { |r| [r.id, r.name, r.age] }.take(1) }
98
98
 
99
99
  it_should_behave_like 'a generated SQL SELECT query'
100
100
 
@@ -103,7 +103,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
103
103
  end
104
104
 
105
105
  context 'when the operand is an offset' do
106
- let(:operand) { base_relation.sort_by { |r| [ r.id, r.name, r.age ] }.drop(1) }
106
+ let(:operand) { base_relation.sort_by { |r| [r.id, r.name, r.age] }.drop(1) }
107
107
 
108
108
  it_should_behave_like 'a generated SQL SELECT query'
109
109
 
@@ -171,7 +171,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
171
171
  end
172
172
 
173
173
  context 'when the operand is a projection' do
174
- let(:operand) { base_relation.project([ :id, :name ]) }
174
+ let(:operand) { base_relation.project([:id, :name]) }
175
175
  let(:summarization) { operand.summarize(summarize_per) { |r| r.add(:count, r.id.count) } }
176
176
 
177
177
  it_should_behave_like 'a generated SQL SELECT query'
@@ -181,7 +181,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
181
181
  end
182
182
 
183
183
  context 'when the operand is a rename' do
184
- let(:operand) { base_relation.rename(:name => :other_name) }
184
+ let(:operand) { base_relation.rename(name: :other_name) }
185
185
 
186
186
  it_should_behave_like 'a generated SQL SELECT query'
187
187
 
@@ -199,7 +199,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
199
199
  end
200
200
 
201
201
  context 'when the operand is a summarization' do
202
- let(:operand) { base_relation.summarize([ :id ]) { |r| r.add(:count, r.age.count) } }
202
+ let(:operand) { base_relation.summarize([:id]) { |r| r.add(:count, r.age.count) } }
203
203
  let(:summarization) { operand.summarize(summarize_per) { |r| r.add(:count, r.count.count) } }
204
204
 
205
205
  it_should_behave_like 'a generated SQL SELECT query'
@@ -208,8 +208,8 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
208
208
  its(:to_subquery) { should eql('(SELECT COUNT ("count") AS "count" FROM (SELECT "id", COUNT ("age") AS "count" FROM "users" GROUP BY "id" HAVING COUNT (*) > 0) AS "users" HAVING FALSE)') }
209
209
  end
210
210
 
211
- context 'when the operand is ordered' do
212
- let(:operand) { base_relation.sort_by { |r| [ r.id, r.name, r.age ] } }
211
+ context 'when the operand is sorted' do
212
+ let(:operand) { base_relation.sort_by { |r| [r.id, r.name, r.age] } }
213
213
 
214
214
  it_should_behave_like 'a generated SQL SELECT query'
215
215
 
@@ -218,7 +218,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
218
218
  end
219
219
 
220
220
  context 'when the operand is reversed' do
221
- let(:operand) { base_relation.sort_by { |r| [ r.id, r.name, r.age ] }.reverse }
221
+ let(:operand) { base_relation.sort_by { |r| [r.id, r.name, r.age] }.reverse }
222
222
 
223
223
  it_should_behave_like 'a generated SQL SELECT query'
224
224
 
@@ -227,7 +227,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
227
227
  end
228
228
 
229
229
  context 'when the operand is limited' do
230
- let(:operand) { base_relation.sort_by { |r| [ r.id, r.name, r.age ] }.take(1) }
230
+ let(:operand) { base_relation.sort_by { |r| [r.id, r.name, r.age] }.take(1) }
231
231
 
232
232
  it_should_behave_like 'a generated SQL SELECT query'
233
233
 
@@ -236,7 +236,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
236
236
  end
237
237
 
238
238
  context 'when the operand is an offset' do
239
- let(:operand) { base_relation.sort_by { |r| [ r.id, r.name, r.age ] }.drop(1) }
239
+ let(:operand) { base_relation.sort_by { |r| [r.id, r.name, r.age] }.drop(1) }
240
240
 
241
241
  it_should_behave_like 'a generated SQL SELECT query'
242
242
 
@@ -282,7 +282,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
282
282
  end
283
283
 
284
284
  context 'summarize by a subset of the operand header' do
285
- let(:summarize_by) { [ :id ] }
285
+ let(:summarize_by) { [:id] }
286
286
  let(:summarization) { operand.summarize(summarize_by) { |r| r.add(:count, r.age.count) } }
287
287
 
288
288
  context 'when the operand is a base relation' do
@@ -295,7 +295,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
295
295
  end
296
296
 
297
297
  context 'when the operand is a projection' do
298
- let(:operand) { base_relation.project([ :id, :name ]) }
298
+ let(:operand) { base_relation.project([:id, :name]) }
299
299
  let(:summarization) { operand.summarize(summarize_by) { |r| r.add(:count, r.name.count) } }
300
300
 
301
301
  it_should_behave_like 'a generated SQL SELECT query'
@@ -314,7 +314,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
314
314
  end
315
315
 
316
316
  context 'when the operand is a rename' do
317
- let(:operand) { base_relation.rename(:name => :other_name) }
317
+ let(:operand) { base_relation.rename(name: :other_name) }
318
318
 
319
319
  it_should_behave_like 'a generated SQL SELECT query'
320
320
 
@@ -331,8 +331,8 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
331
331
  its(:to_subquery) { should eql('(SELECT "id", COUNT ("age") AS "count" FROM (SELECT * FROM "users" WHERE "id" = 1) AS "users" GROUP BY "id" HAVING COUNT (*) > 0)') }
332
332
  end
333
333
 
334
- context 'when the operand is ordered' do
335
- let(:operand) { base_relation.sort_by { |r| [ r.id, r.name, r.age ] } }
334
+ context 'when the operand is sorted' do
335
+ let(:operand) { base_relation.sort_by { |r| [r.id, r.name, r.age] } }
336
336
 
337
337
  it_should_behave_like 'a generated SQL SELECT query'
338
338
 
@@ -341,7 +341,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
341
341
  end
342
342
 
343
343
  context 'when the operand is reversed' do
344
- let(:operand) { base_relation.sort_by { |r| [ r.id, r.name, r.age ] }.reverse }
344
+ let(:operand) { base_relation.sort_by { |r| [r.id, r.name, r.age] }.reverse }
345
345
 
346
346
  it_should_behave_like 'a generated SQL SELECT query'
347
347
 
@@ -350,7 +350,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
350
350
  end
351
351
 
352
352
  context 'when the operand is limited' do
353
- let(:operand) { base_relation.sort_by { |r| [ r.id, r.name, r.age ] }.take(1) }
353
+ let(:operand) { base_relation.sort_by { |r| [r.id, r.name, r.age] }.take(1) }
354
354
 
355
355
  it_should_behave_like 'a generated SQL SELECT query'
356
356
 
@@ -359,7 +359,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
359
359
  end
360
360
 
361
361
  context 'when the operand is an offset' do
362
- let(:operand) { base_relation.sort_by { |r| [ r.id, r.name, r.age ] }.drop(1) }
362
+ let(:operand) { base_relation.sort_by { |r| [r.id, r.name, r.age] }.drop(1) }
363
363
 
364
364
  it_should_behave_like 'a generated SQL SELECT query'
365
365
 
@@ -418,7 +418,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
418
418
  end
419
419
 
420
420
  context 'when the operand is a projection' do
421
- let(:operand) { base_relation.project([ :id, :name ]) }
421
+ let(:operand) { base_relation.project([:id, :name]) }
422
422
  let(:summarization) { operand.summarize(summarize_per) { |r| r.add(:count, r.name.count) } }
423
423
 
424
424
  it_should_behave_like 'a generated SQL SELECT query'
@@ -437,7 +437,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
437
437
  end
438
438
 
439
439
  context 'when the operand is a rename' do
440
- let(:operand) { base_relation.rename(:name => :other_name) }
440
+ let(:operand) { base_relation.rename(name: :other_name) }
441
441
 
442
442
  it_should_behave_like 'a generated SQL SELECT query'
443
443
 
@@ -454,8 +454,8 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
454
454
  its(:to_subquery) { should eql('(SELECT "id", COUNT ("age") AS "count" FROM "other" AS "other" NATURAL LEFT JOIN (SELECT * FROM "users" WHERE "id" = 1) AS "users" GROUP BY "id")') }
455
455
  end
456
456
 
457
- context 'when the operand is ordered' do
458
- let(:operand) { base_relation.sort_by { |r| [ r.id, r.name, r.age ] } }
457
+ context 'when the operand is sorted' do
458
+ let(:operand) { base_relation.sort_by { |r| [r.id, r.name, r.age] } }
459
459
 
460
460
  it_should_behave_like 'a generated SQL SELECT query'
461
461
 
@@ -464,7 +464,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
464
464
  end
465
465
 
466
466
  context 'when the operand is reversed' do
467
- let(:operand) { base_relation.sort_by { |r| [ r.id, r.name, r.age ] }.reverse }
467
+ let(:operand) { base_relation.sort_by { |r| [r.id, r.name, r.age] }.reverse }
468
468
 
469
469
  it_should_behave_like 'a generated SQL SELECT query'
470
470
 
@@ -473,7 +473,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
473
473
  end
474
474
 
475
475
  context 'when the operand is limited' do
476
- let(:operand) { base_relation.sort_by { |r| [ r.id, r.name, r.age ] }.take(1) }
476
+ let(:operand) { base_relation.sort_by { |r| [r.id, r.name, r.age] }.take(1) }
477
477
 
478
478
  it_should_behave_like 'a generated SQL SELECT query'
479
479
 
@@ -482,7 +482,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
482
482
  end
483
483
 
484
484
  context 'when the operand is an offset' do
485
- let(:operand) { base_relation.sort_by { |r| [ r.id, r.name, r.age ] }.drop(1) }
485
+ let(:operand) { base_relation.sort_by { |r| [r.id, r.name, r.age] }.drop(1) }
486
486
 
487
487
  it_should_behave_like 'a generated SQL SELECT query'
488
488
 
@@ -528,7 +528,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
528
528
  end
529
529
 
530
530
  context 'summarize per another projected relation' do
531
- let(:summarize_per) { other_relation.project([ :id ]) }
531
+ let(:summarize_per) { other_relation.project([:id]) }
532
532
  let(:summarization) { operand.summarize(summarize_per) { |r| r.add(:count, r.age.count) } }
533
533
 
534
534
  context 'when the operand is a base relation' do
@@ -541,7 +541,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
541
541
  end
542
542
 
543
543
  context 'when the operand is a projection' do
544
- let(:operand) { base_relation.project([ :id, :name ]) }
544
+ let(:operand) { base_relation.project([:id, :name]) }
545
545
  let(:summarization) { operand.summarize(summarize_per) { |r| r.add(:count, r.name.count) } }
546
546
 
547
547
  it_should_behave_like 'a generated SQL SELECT query'
@@ -560,7 +560,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
560
560
  end
561
561
 
562
562
  context 'when the operand is a rename' do
563
- let(:operand) { base_relation.rename(:name => :other_name) }
563
+ let(:operand) { base_relation.rename(name: :other_name) }
564
564
 
565
565
  it_should_behave_like 'a generated SQL SELECT query'
566
566
 
@@ -577,8 +577,8 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
577
577
  its(:to_subquery) { should eql('(SELECT "id", COUNT ("age") AS "count" FROM (SELECT DISTINCT "id" FROM "other") AS "other" NATURAL LEFT JOIN (SELECT * FROM "users" WHERE "id" = 1) AS "users" GROUP BY "id")') }
578
578
  end
579
579
 
580
- context 'when the operand is ordered' do
581
- let(:operand) { base_relation.sort_by { |r| [ r.id, r.name, r.age ] } }
580
+ context 'when the operand is sorted' do
581
+ let(:operand) { base_relation.sort_by { |r| [r.id, r.name, r.age] } }
582
582
 
583
583
  it_should_behave_like 'a generated SQL SELECT query'
584
584
 
@@ -587,7 +587,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
587
587
  end
588
588
 
589
589
  context 'when the operand is reversed' do
590
- let(:operand) { base_relation.sort_by { |r| [ r.id, r.name, r.age ] }.reverse }
590
+ let(:operand) { base_relation.sort_by { |r| [r.id, r.name, r.age] }.reverse }
591
591
 
592
592
  it_should_behave_like 'a generated SQL SELECT query'
593
593
 
@@ -596,7 +596,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
596
596
  end
597
597
 
598
598
  context 'when the operand is limited' do
599
- let(:operand) { base_relation.sort_by { |r| [ r.id, r.name, r.age ] }.take(1) }
599
+ let(:operand) { base_relation.sort_by { |r| [r.id, r.name, r.age] }.take(1) }
600
600
 
601
601
  it_should_behave_like 'a generated SQL SELECT query'
602
602
 
@@ -605,7 +605,7 @@ describe SQL::Generator::Relation::Unary, '#visit_axiom_algebra_summarization' d
605
605
  end
606
606
 
607
607
  context 'when the operand is an offset' do
608
- let(:operand) { base_relation.sort_by { |r| [ r.id, r.name, r.age ] }.drop(1) }
608
+ let(:operand) { base_relation.sort_by { |r| [r.id, r.name, r.age] }.drop(1) }
609
609
 
610
610
  it_should_behave_like 'a generated SQL SELECT query'
611
611