veritas-sql-generator 0.0.3 → 0.0.4

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 (117) hide show
  1. data/.gemtest +0 -0
  2. data/.rvmrc +1 -0
  3. data/.travis.yml +8 -0
  4. data/Gemfile +20 -10
  5. data/Guardfile +22 -0
  6. data/README.rdoc +2 -0
  7. data/Rakefile +4 -2
  8. data/TODO +16 -2
  9. data/config/flay.yml +2 -2
  10. data/config/flog.yml +1 -1
  11. data/config/roodi.yml +5 -5
  12. data/config/site.reek +21 -19
  13. data/lib/veritas/sql/generator.rb +25 -2
  14. data/lib/veritas/sql/generator/core_ext/date.rb +20 -0
  15. data/lib/veritas/sql/generator/core_ext/date_time.rb +45 -0
  16. data/lib/veritas/sql/generator/direction.rb +3 -1
  17. data/lib/veritas/sql/generator/function.rb +54 -0
  18. data/lib/veritas/sql/generator/function/aggregate.rb +134 -0
  19. data/lib/veritas/sql/generator/function/connective.rb +53 -0
  20. data/lib/veritas/sql/generator/function/numeric.rb +135 -0
  21. data/lib/veritas/sql/generator/function/predicate.rb +266 -0
  22. data/lib/veritas/sql/generator/function/proposition.rb +38 -0
  23. data/lib/veritas/sql/generator/function/string.rb +29 -0
  24. data/lib/veritas/sql/generator/identifier.rb +2 -1
  25. data/lib/veritas/sql/generator/literal.rb +15 -18
  26. data/lib/veritas/sql/generator/relation.rb +144 -17
  27. data/lib/veritas/sql/generator/relation/binary.rb +16 -64
  28. data/lib/veritas/sql/generator/relation/set.rb +30 -22
  29. data/lib/veritas/sql/generator/relation/unary.rb +131 -78
  30. data/lib/veritas/sql/generator/version.rb +1 -1
  31. data/spec/unit/date/iso8601_spec.rb +23 -0
  32. data/spec/unit/date_time/iso_8601_spec.rb +115 -0
  33. data/spec/unit/veritas/sql/generator/class_methods/parenthesize_spec.rb +18 -0
  34. data/spec/unit/veritas/sql/generator/function/aggregate/visit_veritas_aggregate_count_spec.rb +16 -0
  35. data/spec/unit/veritas/sql/generator/function/aggregate/visit_veritas_aggregate_maximum_spec.rb +16 -0
  36. data/spec/unit/veritas/sql/generator/function/aggregate/visit_veritas_aggregate_mean_spec.rb +16 -0
  37. data/spec/unit/veritas/sql/generator/function/aggregate/visit_veritas_aggregate_minimum_spec.rb +16 -0
  38. data/spec/unit/veritas/sql/generator/function/aggregate/visit_veritas_aggregate_standard_deviation_spec.rb +16 -0
  39. data/spec/unit/veritas/sql/generator/function/aggregate/visit_veritas_aggregate_sum_spec.rb +16 -0
  40. data/spec/unit/veritas/sql/generator/function/aggregate/visit_veritas_aggregate_variance_spec.rb +16 -0
  41. data/spec/unit/veritas/sql/generator/function/connective/visit_veritas_function_connective_conjunction_spec.rb +20 -0
  42. data/spec/unit/veritas/sql/generator/function/connective/visit_veritas_function_connective_disjunction_spec.rb +20 -0
  43. data/spec/unit/veritas/sql/generator/function/connective/visit_veritas_function_connective_negation_spec.rb +20 -0
  44. data/spec/unit/veritas/sql/generator/function/numeric/visit_veritas_function_numeric_absolute_spec.rb +15 -0
  45. data/spec/unit/veritas/sql/generator/function/numeric/visit_veritas_function_numeric_addition_spec.rb +15 -0
  46. data/spec/unit/veritas/sql/generator/function/numeric/visit_veritas_function_numeric_division_spec.rb +15 -0
  47. data/spec/unit/veritas/sql/generator/function/numeric/visit_veritas_function_numeric_exponentiation_spec.rb +15 -0
  48. data/spec/unit/veritas/sql/generator/function/numeric/visit_veritas_function_numeric_modulo_spec.rb +15 -0
  49. data/spec/unit/veritas/sql/generator/function/numeric/visit_veritas_function_numeric_multiplication_spec.rb +15 -0
  50. data/spec/unit/veritas/sql/generator/function/numeric/visit_veritas_function_numeric_square_root_spec.rb +15 -0
  51. data/spec/unit/veritas/sql/generator/function/numeric/visit_veritas_function_numeric_subtraction_spec.rb +15 -0
  52. data/spec/unit/veritas/sql/generator/function/numeric/visit_veritas_function_numeric_unary_minus_spec.rb +15 -0
  53. data/spec/unit/veritas/sql/generator/function/numeric/visit_veritas_function_numeric_unary_plus_spec.rb +15 -0
  54. data/spec/unit/veritas/sql/generator/{logic/visit_veritas_logic_predicate_equality_spec.rb → function/predicate/visit_veritas_function_predicate_equality_spec.rb} +5 -5
  55. data/spec/unit/veritas/sql/generator/{logic/visit_veritas_logic_predicate_exclusion_spec.rb → function/predicate/visit_veritas_function_predicate_exclusion_spec.rb} +10 -6
  56. data/spec/unit/veritas/sql/generator/function/predicate/visit_veritas_function_predicate_greater_than_or_equal_to_spec.rb +15 -0
  57. data/spec/unit/veritas/sql/generator/{logic/visit_veritas_logic_predicate_greater_than_spec.rb → function/predicate/visit_veritas_function_predicate_greater_than_spec.rb} +5 -5
  58. data/spec/unit/veritas/sql/generator/{logic/visit_veritas_logic_predicate_inclusion_spec.rb → function/predicate/visit_veritas_function_predicate_inclusion_spec.rb} +10 -6
  59. data/spec/unit/veritas/sql/generator/{logic/visit_veritas_logic_predicate_inequality_spec.rb → function/predicate/visit_veritas_function_predicate_inequality_spec.rb} +8 -8
  60. data/spec/unit/veritas/sql/generator/function/predicate/visit_veritas_function_predicate_less_than_or_equal_to_spec.rb +15 -0
  61. data/spec/unit/veritas/sql/generator/{logic/visit_veritas_logic_predicate_less_than_spec.rb → function/predicate/visit_veritas_function_predicate_less_than_spec.rb} +5 -5
  62. data/spec/unit/veritas/sql/generator/function/proposition/visit_veritas_function_proposition_contradiction_spec.rb +15 -0
  63. data/spec/unit/veritas/sql/generator/function/proposition/visit_veritas_function_proposition_tautology_spec.rb +15 -0
  64. data/spec/unit/veritas/sql/generator/function/string/visit_veritas_function_string_length_spec.rb +15 -0
  65. data/spec/unit/veritas/sql/generator/literal/class_methods/dup_frozen_spec.rb +2 -2
  66. data/spec/unit/veritas/sql/generator/relation/binary/base/to_subquery_spec.rb +1 -1
  67. data/spec/unit/veritas/sql/generator/relation/binary/base/{visit_veritas_base_relation_spec.rb → visit_veritas_relation_base_spec.rb} +3 -3
  68. data/spec/unit/veritas/sql/generator/relation/binary/to_s_spec.rb +2 -2
  69. data/spec/unit/veritas/sql/generator/relation/binary/to_subquery_spec.rb +2 -2
  70. data/spec/unit/veritas/sql/generator/relation/binary/visit_veritas_algebra_join_spec.rb +74 -33
  71. data/spec/unit/veritas/sql/generator/relation/binary/visit_veritas_algebra_product_spec.rb +63 -19
  72. data/spec/unit/veritas/sql/generator/relation/class_methods/visit_spec.rb +1 -1
  73. data/spec/unit/veritas/sql/generator/relation/set/class_methods/normalize_operand_headers_spec.rb +35 -0
  74. data/spec/unit/veritas/sql/generator/relation/set/to_s_spec.rb +1 -1
  75. data/spec/unit/veritas/sql/generator/relation/set/to_subquery_spec.rb +4 -4
  76. data/spec/unit/veritas/sql/generator/relation/set/visit_veritas_algebra_difference_spec.rb +83 -30
  77. data/spec/unit/veritas/sql/generator/relation/set/visit_veritas_algebra_intersection_spec.rb +80 -30
  78. data/spec/unit/veritas/sql/generator/relation/set/visit_veritas_algebra_union_spec.rb +80 -30
  79. data/spec/unit/veritas/sql/generator/relation/to_s_spec.rb +50 -0
  80. data/spec/unit/veritas/sql/generator/relation/to_subquery_spec.rb +49 -0
  81. data/spec/unit/veritas/sql/generator/relation/unary/to_s_spec.rb +1 -1
  82. data/spec/unit/veritas/sql/generator/relation/unary/to_subquery_spec.rb +6 -6
  83. data/spec/unit/veritas/sql/generator/relation/unary/visit_veritas_algebra_extension_spec.rb +165 -0
  84. data/spec/unit/veritas/sql/generator/relation/unary/visit_veritas_algebra_projection_spec.rb +84 -29
  85. data/spec/unit/veritas/sql/generator/relation/unary/visit_veritas_algebra_rename_spec.rb +69 -27
  86. data/spec/unit/veritas/sql/generator/relation/unary/visit_veritas_algebra_restriction_spec.rb +64 -22
  87. data/spec/unit/veritas/sql/generator/relation/unary/visit_veritas_algebra_summarization_spec.rb +652 -0
  88. data/spec/unit/veritas/sql/generator/relation/unary/{visit_veritas_base_relation_spec.rb → visit_veritas_relation_base_spec.rb} +4 -4
  89. data/spec/unit/veritas/sql/generator/relation/unary/visit_veritas_relation_operation_limit_spec.rb +60 -20
  90. data/spec/unit/veritas/sql/generator/relation/unary/visit_veritas_relation_operation_offset_spec.rb +60 -20
  91. data/spec/unit/veritas/sql/generator/relation/unary/visit_veritas_relation_operation_order_spec.rb +63 -23
  92. data/spec/unit/veritas/sql/generator/relation/unary/visit_veritas_relation_operation_reverse_spec.rb +60 -20
  93. data/spec/unit/veritas/sql/generator/relation/visited_spec.rb +1 -1
  94. data/tasks/metrics/ci.rake +7 -0
  95. data/tasks/{quality → metrics}/flay.rake +0 -0
  96. data/tasks/{quality → metrics}/flog.rake +0 -0
  97. data/tasks/{quality → metrics}/heckle.rake +1 -0
  98. data/tasks/{quality → metrics}/metric_fu.rake +3 -0
  99. data/tasks/{quality → metrics}/reek.rake +0 -0
  100. data/tasks/{quality → metrics}/roodi.rake +0 -0
  101. data/tasks/{quality → metrics}/yardstick.rake +0 -0
  102. data/tasks/spec.rake +1 -0
  103. data/veritas-sql-generator.gemspec +82 -114
  104. metadata +137 -125
  105. data/lib/veritas/base_relation.rb +0 -36
  106. data/lib/veritas/sql/generator/logic.rb +0 -349
  107. data/spec/unit/veritas/base_relation/name_spec.rb +0 -45
  108. data/spec/unit/veritas/sql/generator/logic/visit_veritas_logic_connective_conjunction_spec.rb +0 -16
  109. data/spec/unit/veritas/sql/generator/logic/visit_veritas_logic_connective_disjunction_spec.rb +0 -16
  110. data/spec/unit/veritas/sql/generator/logic/visit_veritas_logic_connective_negation_spec.rb +0 -16
  111. data/spec/unit/veritas/sql/generator/logic/visit_veritas_logic_predicate_greater_than_or_equal_to_spec.rb +0 -15
  112. data/spec/unit/veritas/sql/generator/logic/visit_veritas_logic_predicate_less_than_or_equal_to_spec.rb +0 -15
  113. data/spec/unit/veritas/sql/generator/logic/visit_veritas_logic_proposition_contradiction_spec.rb +0 -15
  114. data/spec/unit/veritas/sql/generator/logic/visit_veritas_logic_proposition_tautology_spec.rb +0 -15
  115. data/spec/unit/veritas/sql/generator/relation/binary/class_methods/subquery_spec.rb +0 -42
  116. data/spec/unit/veritas/sql/generator/relation/class_methods/subquery_spec.rb +0 -33
  117. data/tasks/quality/ci.rake +0 -2
metadata CHANGED
@@ -1,8 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: veritas-sql-generator
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 23
4
5
  prerelease:
5
- version: 0.0.3
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 4
10
+ version: 0.0.4
6
11
  platform: ruby
7
12
  authors:
8
13
  - Dan Kubb
@@ -10,74 +15,104 @@ autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
17
 
13
- date: 2011-04-22 00:00:00 Z
18
+ date: 2011-06-01 00:00:00 Z
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
- name: veritas
17
- requirement: &id001 !ruby/object:Gem::Requirement
21
+ type: :runtime
22
+ version_requirements: &id001 !ruby/object:Gem::Requirement
18
23
  none: false
19
24
  requirements:
20
25
  - - "="
21
26
  - !ruby/object:Gem::Version
22
- version: 0.0.3
23
- type: :runtime
27
+ hash: 23
28
+ segments:
29
+ - 0
30
+ - 0
31
+ - 4
32
+ version: 0.0.4
33
+ requirement: *id001
34
+ name: veritas
24
35
  prerelease: false
25
- version_requirements: *id001
26
36
  - !ruby/object:Gem::Dependency
27
- name: backports
28
- requirement: &id002 !ruby/object:Gem::Requirement
37
+ type: :development
38
+ version_requirements: &id002 !ruby/object:Gem::Requirement
29
39
  none: false
30
40
  requirements:
31
41
  - - ~>
32
42
  - !ruby/object:Gem::Version
33
- version: 2.1.0
34
- type: :development
43
+ hash: 5
44
+ segments:
45
+ - 2
46
+ - 2
47
+ - 1
48
+ version: 2.2.1
49
+ requirement: *id002
50
+ name: backports
35
51
  prerelease: false
36
- version_requirements: *id002
37
52
  - !ruby/object:Gem::Dependency
38
- name: jeweler
39
- requirement: &id003 !ruby/object:Gem::Requirement
53
+ type: :development
54
+ version_requirements: &id003 !ruby/object:Gem::Requirement
40
55
  none: false
41
56
  requirements:
42
57
  - - ~>
43
58
  - !ruby/object:Gem::Version
44
- version: 1.5.2
45
- type: :development
59
+ hash: 15
60
+ segments:
61
+ - 1
62
+ - 6
63
+ - 0
64
+ version: 1.6.0
65
+ requirement: *id003
66
+ name: jeweler
46
67
  prerelease: false
47
- version_requirements: *id003
48
68
  - !ruby/object:Gem::Dependency
49
- name: rake
50
- requirement: &id004 !ruby/object:Gem::Requirement
69
+ type: :development
70
+ version_requirements: &id004 !ruby/object:Gem::Requirement
51
71
  none: false
52
72
  requirements:
53
73
  - - ~>
54
74
  - !ruby/object:Gem::Version
55
- version: 0.8.7
56
- type: :development
75
+ hash: 59
76
+ segments:
77
+ - 0
78
+ - 9
79
+ - 0
80
+ version: 0.9.0
81
+ requirement: *id004
82
+ name: rake
57
83
  prerelease: false
58
- version_requirements: *id004
59
84
  - !ruby/object:Gem::Dependency
60
- name: rspec
61
- requirement: &id005 !ruby/object:Gem::Requirement
85
+ type: :development
86
+ version_requirements: &id005 !ruby/object:Gem::Requirement
62
87
  none: false
63
88
  requirements:
64
89
  - - ~>
65
90
  - !ruby/object:Gem::Version
91
+ hash: 31
92
+ segments:
93
+ - 1
94
+ - 3
95
+ - 2
66
96
  version: 1.3.2
67
- type: :development
97
+ requirement: *id005
98
+ name: rspec
68
99
  prerelease: false
69
- version_requirements: *id005
70
100
  - !ruby/object:Gem::Dependency
71
- name: yard
72
- requirement: &id006 !ruby/object:Gem::Requirement
101
+ type: :development
102
+ version_requirements: &id006 !ruby/object:Gem::Requirement
73
103
  none: false
74
104
  requirements:
75
105
  - - ~>
76
106
  - !ruby/object:Gem::Version
77
- version: 0.6.8
78
- type: :development
107
+ hash: 1
108
+ segments:
109
+ - 0
110
+ - 7
111
+ - 1
112
+ version: 0.7.1
113
+ requirement: *id006
114
+ name: yard
79
115
  prerelease: false
80
- version_requirements: *id006
81
116
  description: Generate SQL from a veritas relation
82
117
  email: dan.kubb@gmail.com
83
118
  executables: []
@@ -89,7 +124,11 @@ extra_rdoc_files:
89
124
  - README.rdoc
90
125
  - TODO
91
126
  files:
127
+ - .gemtest
128
+ - .rvmrc
129
+ - .travis.yml
92
130
  - Gemfile
131
+ - Guardfile
93
132
  - LICENSE
94
133
  - README.rdoc
95
134
  - Rakefile
@@ -100,13 +139,20 @@ files:
100
139
  - config/site.reek
101
140
  - config/yardstick.yml
102
141
  - lib/veritas-sql-generator.rb
103
- - lib/veritas/base_relation.rb
104
142
  - lib/veritas/sql/generator.rb
105
143
  - lib/veritas/sql/generator/attribute.rb
144
+ - lib/veritas/sql/generator/core_ext/date.rb
145
+ - lib/veritas/sql/generator/core_ext/date_time.rb
106
146
  - lib/veritas/sql/generator/direction.rb
147
+ - lib/veritas/sql/generator/function.rb
148
+ - lib/veritas/sql/generator/function/aggregate.rb
149
+ - lib/veritas/sql/generator/function/connective.rb
150
+ - lib/veritas/sql/generator/function/numeric.rb
151
+ - lib/veritas/sql/generator/function/predicate.rb
152
+ - lib/veritas/sql/generator/function/proposition.rb
153
+ - lib/veritas/sql/generator/function/string.rb
107
154
  - lib/veritas/sql/generator/identifier.rb
108
155
  - lib/veritas/sql/generator/literal.rb
109
- - lib/veritas/sql/generator/logic.rb
110
156
  - lib/veritas/sql/generator/relation.rb
111
157
  - lib/veritas/sql/generator/relation/base.rb
112
158
  - lib/veritas/sql/generator/relation/binary.rb
@@ -120,10 +166,43 @@ files:
120
166
  - spec/shared/idempotent_method_behavior.rb
121
167
  - spec/spec.opts
122
168
  - spec/spec_helper.rb
123
- - spec/unit/veritas/base_relation/name_spec.rb
169
+ - spec/unit/date/iso8601_spec.rb
170
+ - spec/unit/date_time/iso_8601_spec.rb
124
171
  - spec/unit/veritas/sql/generator/attribute/visit_veritas_attribute_spec.rb
172
+ - spec/unit/veritas/sql/generator/class_methods/parenthesize_spec.rb
125
173
  - spec/unit/veritas/sql/generator/direction/visit_veritas_relation_operation_order_ascending_spec.rb
126
174
  - spec/unit/veritas/sql/generator/direction/visit_veritas_relation_operation_order_descending_spec.rb
175
+ - spec/unit/veritas/sql/generator/function/aggregate/visit_veritas_aggregate_count_spec.rb
176
+ - spec/unit/veritas/sql/generator/function/aggregate/visit_veritas_aggregate_maximum_spec.rb
177
+ - spec/unit/veritas/sql/generator/function/aggregate/visit_veritas_aggregate_mean_spec.rb
178
+ - spec/unit/veritas/sql/generator/function/aggregate/visit_veritas_aggregate_minimum_spec.rb
179
+ - spec/unit/veritas/sql/generator/function/aggregate/visit_veritas_aggregate_standard_deviation_spec.rb
180
+ - spec/unit/veritas/sql/generator/function/aggregate/visit_veritas_aggregate_sum_spec.rb
181
+ - spec/unit/veritas/sql/generator/function/aggregate/visit_veritas_aggregate_variance_spec.rb
182
+ - spec/unit/veritas/sql/generator/function/connective/visit_veritas_function_connective_conjunction_spec.rb
183
+ - spec/unit/veritas/sql/generator/function/connective/visit_veritas_function_connective_disjunction_spec.rb
184
+ - spec/unit/veritas/sql/generator/function/connective/visit_veritas_function_connective_negation_spec.rb
185
+ - spec/unit/veritas/sql/generator/function/numeric/visit_veritas_function_numeric_absolute_spec.rb
186
+ - spec/unit/veritas/sql/generator/function/numeric/visit_veritas_function_numeric_addition_spec.rb
187
+ - spec/unit/veritas/sql/generator/function/numeric/visit_veritas_function_numeric_division_spec.rb
188
+ - spec/unit/veritas/sql/generator/function/numeric/visit_veritas_function_numeric_exponentiation_spec.rb
189
+ - spec/unit/veritas/sql/generator/function/numeric/visit_veritas_function_numeric_modulo_spec.rb
190
+ - spec/unit/veritas/sql/generator/function/numeric/visit_veritas_function_numeric_multiplication_spec.rb
191
+ - spec/unit/veritas/sql/generator/function/numeric/visit_veritas_function_numeric_square_root_spec.rb
192
+ - spec/unit/veritas/sql/generator/function/numeric/visit_veritas_function_numeric_subtraction_spec.rb
193
+ - spec/unit/veritas/sql/generator/function/numeric/visit_veritas_function_numeric_unary_minus_spec.rb
194
+ - spec/unit/veritas/sql/generator/function/numeric/visit_veritas_function_numeric_unary_plus_spec.rb
195
+ - spec/unit/veritas/sql/generator/function/predicate/visit_veritas_function_predicate_equality_spec.rb
196
+ - spec/unit/veritas/sql/generator/function/predicate/visit_veritas_function_predicate_exclusion_spec.rb
197
+ - spec/unit/veritas/sql/generator/function/predicate/visit_veritas_function_predicate_greater_than_or_equal_to_spec.rb
198
+ - spec/unit/veritas/sql/generator/function/predicate/visit_veritas_function_predicate_greater_than_spec.rb
199
+ - spec/unit/veritas/sql/generator/function/predicate/visit_veritas_function_predicate_inclusion_spec.rb
200
+ - spec/unit/veritas/sql/generator/function/predicate/visit_veritas_function_predicate_inequality_spec.rb
201
+ - spec/unit/veritas/sql/generator/function/predicate/visit_veritas_function_predicate_less_than_or_equal_to_spec.rb
202
+ - spec/unit/veritas/sql/generator/function/predicate/visit_veritas_function_predicate_less_than_spec.rb
203
+ - spec/unit/veritas/sql/generator/function/proposition/visit_veritas_function_proposition_contradiction_spec.rb
204
+ - spec/unit/veritas/sql/generator/function/proposition/visit_veritas_function_proposition_tautology_spec.rb
205
+ - spec/unit/veritas/sql/generator/function/string/visit_veritas_function_string_length_spec.rb
127
206
  - spec/unit/veritas/sql/generator/identifier/visit_identifier_spec.rb
128
207
  - spec/unit/veritas/sql/generator/literal/class_methods/dup_frozen_spec.rb
129
208
  - spec/unit/veritas/sql/generator/literal/visit_class_spec.rb
@@ -136,41 +215,31 @@ files:
136
215
  - spec/unit/veritas/sql/generator/literal/visit_string_spec.rb
137
216
  - spec/unit/veritas/sql/generator/literal/visit_time_spec.rb
138
217
  - spec/unit/veritas/sql/generator/literal/visit_true_class_spec.rb
139
- - spec/unit/veritas/sql/generator/logic/visit_veritas_logic_connective_conjunction_spec.rb
140
- - spec/unit/veritas/sql/generator/logic/visit_veritas_logic_connective_disjunction_spec.rb
141
- - spec/unit/veritas/sql/generator/logic/visit_veritas_logic_connective_negation_spec.rb
142
- - spec/unit/veritas/sql/generator/logic/visit_veritas_logic_predicate_equality_spec.rb
143
- - spec/unit/veritas/sql/generator/logic/visit_veritas_logic_predicate_exclusion_spec.rb
144
- - spec/unit/veritas/sql/generator/logic/visit_veritas_logic_predicate_greater_than_or_equal_to_spec.rb
145
- - spec/unit/veritas/sql/generator/logic/visit_veritas_logic_predicate_greater_than_spec.rb
146
- - spec/unit/veritas/sql/generator/logic/visit_veritas_logic_predicate_inclusion_spec.rb
147
- - spec/unit/veritas/sql/generator/logic/visit_veritas_logic_predicate_inequality_spec.rb
148
- - spec/unit/veritas/sql/generator/logic/visit_veritas_logic_predicate_less_than_or_equal_to_spec.rb
149
- - spec/unit/veritas/sql/generator/logic/visit_veritas_logic_predicate_less_than_spec.rb
150
- - spec/unit/veritas/sql/generator/logic/visit_veritas_logic_proposition_contradiction_spec.rb
151
- - spec/unit/veritas/sql/generator/logic/visit_veritas_logic_proposition_tautology_spec.rb
152
218
  - spec/unit/veritas/sql/generator/relation/binary/base/to_subquery_spec.rb
153
- - spec/unit/veritas/sql/generator/relation/binary/base/visit_veritas_base_relation_spec.rb
154
- - spec/unit/veritas/sql/generator/relation/binary/class_methods/subquery_spec.rb
219
+ - spec/unit/veritas/sql/generator/relation/binary/base/visit_veritas_relation_base_spec.rb
155
220
  - spec/unit/veritas/sql/generator/relation/binary/to_s_spec.rb
156
221
  - spec/unit/veritas/sql/generator/relation/binary/to_subquery_spec.rb
157
222
  - spec/unit/veritas/sql/generator/relation/binary/visit_veritas_algebra_join_spec.rb
158
223
  - spec/unit/veritas/sql/generator/relation/binary/visit_veritas_algebra_product_spec.rb
159
- - spec/unit/veritas/sql/generator/relation/class_methods/subquery_spec.rb
160
224
  - spec/unit/veritas/sql/generator/relation/class_methods/visit_spec.rb
161
225
  - spec/unit/veritas/sql/generator/relation/name_spec.rb
226
+ - spec/unit/veritas/sql/generator/relation/set/class_methods/normalize_operand_headers_spec.rb
162
227
  - spec/unit/veritas/sql/generator/relation/set/to_s_spec.rb
163
228
  - spec/unit/veritas/sql/generator/relation/set/to_subquery_spec.rb
164
229
  - spec/unit/veritas/sql/generator/relation/set/visit_veritas_algebra_difference_spec.rb
165
230
  - spec/unit/veritas/sql/generator/relation/set/visit_veritas_algebra_intersection_spec.rb
166
231
  - spec/unit/veritas/sql/generator/relation/set/visit_veritas_algebra_union_spec.rb
232
+ - spec/unit/veritas/sql/generator/relation/to_s_spec.rb
167
233
  - spec/unit/veritas/sql/generator/relation/to_sql_spec.rb
234
+ - spec/unit/veritas/sql/generator/relation/to_subquery_spec.rb
168
235
  - spec/unit/veritas/sql/generator/relation/unary/to_s_spec.rb
169
236
  - spec/unit/veritas/sql/generator/relation/unary/to_subquery_spec.rb
237
+ - spec/unit/veritas/sql/generator/relation/unary/visit_veritas_algebra_extension_spec.rb
170
238
  - spec/unit/veritas/sql/generator/relation/unary/visit_veritas_algebra_projection_spec.rb
171
239
  - spec/unit/veritas/sql/generator/relation/unary/visit_veritas_algebra_rename_spec.rb
172
240
  - spec/unit/veritas/sql/generator/relation/unary/visit_veritas_algebra_restriction_spec.rb
173
- - spec/unit/veritas/sql/generator/relation/unary/visit_veritas_base_relation_spec.rb
241
+ - spec/unit/veritas/sql/generator/relation/unary/visit_veritas_algebra_summarization_spec.rb
242
+ - spec/unit/veritas/sql/generator/relation/unary/visit_veritas_relation_base_spec.rb
174
243
  - spec/unit/veritas/sql/generator/relation/unary/visit_veritas_relation_operation_limit_spec.rb
175
244
  - spec/unit/veritas/sql/generator/relation/unary/visit_veritas_relation_operation_offset_spec.rb
176
245
  - spec/unit/veritas/sql/generator/relation/unary/visit_veritas_relation_operation_order_spec.rb
@@ -180,14 +249,14 @@ files:
180
249
  - spec/unit/veritas/sql/generator/visitor/class_methods/handler_for_spec.rb
181
250
  - spec/unit/veritas/sql/generator/visitor/visit_spec.rb
182
251
  - spec/unit/veritas/sql/generator/visitor/visited_spec.rb
183
- - tasks/quality/ci.rake
184
- - tasks/quality/flay.rake
185
- - tasks/quality/flog.rake
186
- - tasks/quality/heckle.rake
187
- - tasks/quality/metric_fu.rake
188
- - tasks/quality/reek.rake
189
- - tasks/quality/roodi.rake
190
- - tasks/quality/yardstick.rake
252
+ - tasks/metrics/ci.rake
253
+ - tasks/metrics/flay.rake
254
+ - tasks/metrics/flog.rake
255
+ - tasks/metrics/heckle.rake
256
+ - tasks/metrics/metric_fu.rake
257
+ - tasks/metrics/reek.rake
258
+ - tasks/metrics/roodi.rake
259
+ - tasks/metrics/yardstick.rake
191
260
  - tasks/spec.rake
192
261
  - tasks/yard.rake
193
262
  - veritas-sql-generator.gemspec
@@ -204,82 +273,25 @@ required_ruby_version: !ruby/object:Gem::Requirement
204
273
  requirements:
205
274
  - - ">="
206
275
  - !ruby/object:Gem::Version
276
+ hash: 3
277
+ segments:
278
+ - 0
207
279
  version: "0"
208
280
  required_rubygems_version: !ruby/object:Gem::Requirement
209
281
  none: false
210
282
  requirements:
211
283
  - - ">="
212
284
  - !ruby/object:Gem::Version
285
+ hash: 3
286
+ segments:
287
+ - 0
213
288
  version: "0"
214
289
  requirements: []
215
290
 
216
291
  rubyforge_project:
217
- rubygems_version: 1.7.2
292
+ rubygems_version: 1.8.5
218
293
  signing_key:
219
294
  specification_version: 3
220
295
  summary: Relational algebra SQL generator
221
- test_files:
222
- - spec/shared/command_method_behavior.rb
223
- - spec/shared/generated_sql_behavior.rb
224
- - spec/shared/idempotent_method_behavior.rb
225
- - spec/spec_helper.rb
226
- - spec/unit/veritas/base_relation/name_spec.rb
227
- - spec/unit/veritas/sql/generator/attribute/visit_veritas_attribute_spec.rb
228
- - spec/unit/veritas/sql/generator/direction/visit_veritas_relation_operation_order_ascending_spec.rb
229
- - spec/unit/veritas/sql/generator/direction/visit_veritas_relation_operation_order_descending_spec.rb
230
- - spec/unit/veritas/sql/generator/identifier/visit_identifier_spec.rb
231
- - spec/unit/veritas/sql/generator/literal/class_methods/dup_frozen_spec.rb
232
- - spec/unit/veritas/sql/generator/literal/visit_class_spec.rb
233
- - spec/unit/veritas/sql/generator/literal/visit_date_spec.rb
234
- - spec/unit/veritas/sql/generator/literal/visit_date_time_spec.rb
235
- - spec/unit/veritas/sql/generator/literal/visit_enumerable_spec.rb
236
- - spec/unit/veritas/sql/generator/literal/visit_false_class_spec.rb
237
- - spec/unit/veritas/sql/generator/literal/visit_nil_class_spec.rb
238
- - spec/unit/veritas/sql/generator/literal/visit_numeric_spec.rb
239
- - spec/unit/veritas/sql/generator/literal/visit_string_spec.rb
240
- - spec/unit/veritas/sql/generator/literal/visit_time_spec.rb
241
- - spec/unit/veritas/sql/generator/literal/visit_true_class_spec.rb
242
- - spec/unit/veritas/sql/generator/logic/visit_veritas_logic_connective_conjunction_spec.rb
243
- - spec/unit/veritas/sql/generator/logic/visit_veritas_logic_connective_disjunction_spec.rb
244
- - spec/unit/veritas/sql/generator/logic/visit_veritas_logic_connective_negation_spec.rb
245
- - spec/unit/veritas/sql/generator/logic/visit_veritas_logic_predicate_equality_spec.rb
246
- - spec/unit/veritas/sql/generator/logic/visit_veritas_logic_predicate_exclusion_spec.rb
247
- - spec/unit/veritas/sql/generator/logic/visit_veritas_logic_predicate_greater_than_or_equal_to_spec.rb
248
- - spec/unit/veritas/sql/generator/logic/visit_veritas_logic_predicate_greater_than_spec.rb
249
- - spec/unit/veritas/sql/generator/logic/visit_veritas_logic_predicate_inclusion_spec.rb
250
- - spec/unit/veritas/sql/generator/logic/visit_veritas_logic_predicate_inequality_spec.rb
251
- - spec/unit/veritas/sql/generator/logic/visit_veritas_logic_predicate_less_than_or_equal_to_spec.rb
252
- - spec/unit/veritas/sql/generator/logic/visit_veritas_logic_predicate_less_than_spec.rb
253
- - spec/unit/veritas/sql/generator/logic/visit_veritas_logic_proposition_contradiction_spec.rb
254
- - spec/unit/veritas/sql/generator/logic/visit_veritas_logic_proposition_tautology_spec.rb
255
- - spec/unit/veritas/sql/generator/relation/binary/base/to_subquery_spec.rb
256
- - spec/unit/veritas/sql/generator/relation/binary/base/visit_veritas_base_relation_spec.rb
257
- - spec/unit/veritas/sql/generator/relation/binary/class_methods/subquery_spec.rb
258
- - spec/unit/veritas/sql/generator/relation/binary/to_s_spec.rb
259
- - spec/unit/veritas/sql/generator/relation/binary/to_subquery_spec.rb
260
- - spec/unit/veritas/sql/generator/relation/binary/visit_veritas_algebra_join_spec.rb
261
- - spec/unit/veritas/sql/generator/relation/binary/visit_veritas_algebra_product_spec.rb
262
- - spec/unit/veritas/sql/generator/relation/class_methods/subquery_spec.rb
263
- - spec/unit/veritas/sql/generator/relation/class_methods/visit_spec.rb
264
- - spec/unit/veritas/sql/generator/relation/name_spec.rb
265
- - spec/unit/veritas/sql/generator/relation/set/to_s_spec.rb
266
- - spec/unit/veritas/sql/generator/relation/set/to_subquery_spec.rb
267
- - spec/unit/veritas/sql/generator/relation/set/visit_veritas_algebra_difference_spec.rb
268
- - spec/unit/veritas/sql/generator/relation/set/visit_veritas_algebra_intersection_spec.rb
269
- - spec/unit/veritas/sql/generator/relation/set/visit_veritas_algebra_union_spec.rb
270
- - spec/unit/veritas/sql/generator/relation/to_sql_spec.rb
271
- - spec/unit/veritas/sql/generator/relation/unary/to_s_spec.rb
272
- - spec/unit/veritas/sql/generator/relation/unary/to_subquery_spec.rb
273
- - spec/unit/veritas/sql/generator/relation/unary/visit_veritas_algebra_projection_spec.rb
274
- - spec/unit/veritas/sql/generator/relation/unary/visit_veritas_algebra_rename_spec.rb
275
- - spec/unit/veritas/sql/generator/relation/unary/visit_veritas_algebra_restriction_spec.rb
276
- - spec/unit/veritas/sql/generator/relation/unary/visit_veritas_base_relation_spec.rb
277
- - spec/unit/veritas/sql/generator/relation/unary/visit_veritas_relation_operation_limit_spec.rb
278
- - spec/unit/veritas/sql/generator/relation/unary/visit_veritas_relation_operation_offset_spec.rb
279
- - spec/unit/veritas/sql/generator/relation/unary/visit_veritas_relation_operation_order_spec.rb
280
- - spec/unit/veritas/sql/generator/relation/unary/visit_veritas_relation_operation_reverse_spec.rb
281
- - spec/unit/veritas/sql/generator/relation/visit_spec.rb
282
- - spec/unit/veritas/sql/generator/relation/visited_spec.rb
283
- - spec/unit/veritas/sql/generator/visitor/class_methods/handler_for_spec.rb
284
- - spec/unit/veritas/sql/generator/visitor/visit_spec.rb
285
- - spec/unit/veritas/sql/generator/visitor/visited_spec.rb
296
+ test_files: []
297
+
@@ -1,36 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Veritas
4
-
5
- # A class that represents a base relation in an RDBMS
6
- class BaseRelation < Relation
7
-
8
- # The base relation name
9
- #
10
- # @example
11
- # name = base_relation.name
12
- #
13
- # @return [#to_s]
14
- #
15
- # @api public
16
- attr_reader :name
17
-
18
- # Initialize a base relation
19
- #
20
- # @param [#to_s] name
21
- # the relation name
22
- # @param [Header, #to_ary] header
23
- # the relation header
24
- # @param [Enumerable] tuples
25
- # the relation tuples
26
- #
27
- # @return [undefined]
28
- #
29
- # @api private
30
- def initialize(name, *args)
31
- super(*args)
32
- @name = Immutable.freeze_object(name.to_s)
33
- end
34
-
35
- end # class BaseRelation
36
- end # module Veritas
@@ -1,349 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Veritas
4
- module SQL
5
- module Generator
6
-
7
- # Generates an SQL statement for a logic expression
8
- module Logic
9
- include Attribute, Literal
10
-
11
- EQUAL_TO = ' = '.freeze
12
- EQUAL_TO_NULL = ' IS '.freeze
13
- NOT_EQUAL_TO = ' <> '.freeze
14
- NOT_EQUAL_TO_NULL = ' IS NOT '.freeze
15
- GREATER_THAN = ' > '.freeze
16
- GREATER_THAN_OR_EQUAL_TO = ' >= '.freeze
17
- LESS_THAN = ' < '.freeze
18
- LESS_THAN_OR_EQUAL_TO = ' <= '.freeze
19
- IN = ' IN '.freeze
20
- NOT_IN = ' NOT IN '.freeze
21
- BETWEEN = ' BETWEEN '.freeze
22
- NOT_BETWEEN = ' NOT BETWEEN '.freeze
23
- AND = ' AND '.freeze
24
- OR = ' OR '.freeze
25
- MATCH_ALL = '1 = 1'.freeze
26
- MATCH_NONE = '1 = 0'.freeze
27
- EMPTY_ARRAY = [].freeze
28
-
29
- # Visit an Equality predicate
30
- #
31
- # @param [Logic::Predicate::Equality] equality
32
- #
33
- # @return [#to_s]
34
- #
35
- # @api private
36
- def visit_veritas_logic_predicate_equality(equality)
37
- binary_operation_sql(equality.right.nil? ? EQUAL_TO_NULL : EQUAL_TO, equality)
38
- end
39
-
40
- # Visit an Inequality predicate
41
- #
42
- # @param [Logic::Predicate::Inequality] inequality
43
- #
44
- # @return [#to_s]
45
- #
46
- # @api private
47
- def visit_veritas_logic_predicate_inequality(inequality)
48
- expressions = inequality_expressions(inequality)
49
- expressions.one? ? expressions.first : "(#{expressions.join(OR)})"
50
- end
51
-
52
- # Visit an GreaterThan predicate
53
- #
54
- # @param [Logic::Predicate::GreaterThan] greater_than
55
- #
56
- # @return [#to_s]
57
- #
58
- # @api private
59
- def visit_veritas_logic_predicate_greater_than(greater_than)
60
- binary_operation_sql(GREATER_THAN, greater_than)
61
- end
62
-
63
- # Visit an GreaterThanOrEqualTo predicate
64
- #
65
- # @param [Logic::Predicate::GreaterThanOrEqualTo] greater_than_or_equal_to
66
- #
67
- # @return [#to_s]
68
- #
69
- # @api private
70
- def visit_veritas_logic_predicate_greater_than_or_equal_to(greater_than_or_equal_to)
71
- binary_operation_sql(GREATER_THAN_OR_EQUAL_TO, greater_than_or_equal_to)
72
- end
73
-
74
- # Visit an LessThan predicate
75
- #
76
- # @param [Logic::Predicate::LessThan] less_than
77
- #
78
- # @return [#to_s]
79
- #
80
- # @api private
81
- def visit_veritas_logic_predicate_less_than(less_than)
82
- binary_operation_sql(LESS_THAN, less_than)
83
- end
84
-
85
- # Visit an LessThanOrEqualTo predicate
86
- #
87
- # @param [Logic::Predicate::LessThanOrEqualTo] less_than_or_equal_to
88
- #
89
- # @return [#to_s]
90
- #
91
- # @api private
92
- def visit_veritas_logic_predicate_less_than_or_equal_to(less_than_or_equal_to)
93
- binary_operation_sql(LESS_THAN_OR_EQUAL_TO, less_than_or_equal_to)
94
- end
95
-
96
- # Visit an Inclusion predicate
97
- #
98
- # @param [Logic::Predicate::Inclusion] inclusion
99
- #
100
- # @return [#to_s]
101
- #
102
- # @api private
103
- def visit_veritas_logic_predicate_inclusion(inclusion)
104
- case inclusion.right
105
- when Range then range_inclusion_sql(inclusion)
106
- when EMPTY_ARRAY then MATCH_NONE
107
- else
108
- binary_operation_sql(IN, inclusion)
109
- end
110
- end
111
-
112
- # Visit an Exclusion predicate
113
- #
114
- # @param [Logic::Predicate::Exclusion] exclusion
115
- #
116
- # @return [#to_s]
117
- #
118
- # @api private
119
- def visit_veritas_logic_predicate_exclusion(exclusion)
120
- case exclusion.right
121
- when Range then range_exclusion_sql(exclusion)
122
- when EMPTY_ARRAY then MATCH_ALL
123
- else
124
- binary_operation_sql(NOT_IN, exclusion)
125
- end
126
- end
127
-
128
- # Visit an Conjunction connective
129
- #
130
- # @param [Logic::Connective::Conjunction] conjunction
131
- #
132
- # @return [#to_s]
133
- #
134
- # @api private
135
- def visit_veritas_logic_connective_conjunction(conjunction)
136
- binary_connective_sql(AND, conjunction)
137
- end
138
-
139
- # Visit an Disjunction connective
140
- #
141
- # @param [Logic::Connective::Disjunction] disjunction
142
- #
143
- # @return [#to_s]
144
- #
145
- # @api private
146
- def visit_veritas_logic_connective_disjunction(disjunction)
147
- binary_connective_sql(OR, disjunction)
148
- end
149
-
150
- # Visit an Negation connective
151
- #
152
- # @param [Logic::Connective::Negation] negation
153
- #
154
- # @return [#to_s]
155
- #
156
- # @api private
157
- def visit_veritas_logic_connective_negation(negation)
158
- "NOT #{dispatch negation.operand}"
159
- end
160
-
161
- # Visit a Tautology
162
- #
163
- # @param [Logic::Proposition::Tautology] _tautology
164
- #
165
- # @return [#to_s]
166
- #
167
- # @api private
168
- def visit_veritas_logic_proposition_tautology(_tautology)
169
- MATCH_ALL
170
- end
171
-
172
- # Visit a Contradiction
173
- #
174
- # @param [Logic::Proposition::Contradiction] _contradiction
175
- #
176
- # @return [#to_s]
177
- #
178
- # @api private
179
- def visit_veritas_logic_proposition_contradiction(_contradiction)
180
- MATCH_NONE
181
- end
182
-
183
- private
184
-
185
- # Return the SQL for an Inclusion using a Range
186
- #
187
- # @param [Logic::Predicate::Inclusion] predicate
188
- #
189
- # @return [#to_s]
190
- #
191
- # @api private
192
- def range_inclusion_sql(inclusion)
193
- if inclusion.right.exclude_end?
194
- exclusive_range_inclusion_sql(inclusion)
195
- else
196
- inclusive_range_sql(BETWEEN, inclusion)
197
- end
198
- end
199
-
200
- # Return the SQL for an Exclusion using a Range
201
- #
202
- # @param [Logic::Predicate::Exclusion] exclusion
203
- #
204
- # @return [#to_s]
205
- #
206
- # @api private
207
- def range_exclusion_sql(exclusion)
208
- if exclusion.right.exclude_end?
209
- exclusive_range_exclusion_sql(exclusion)
210
- else
211
- inclusive_range_sql(NOT_BETWEEN, exclusion)
212
- end
213
- end
214
-
215
- # Return the SQL for an Inclusion using an exclusive Range
216
- #
217
- # @param [Logic::Predicate::Inclusion] inclusion
218
- #
219
- # @return [#to_s]
220
- #
221
- # @api private
222
- def exclusive_range_inclusion_sql(inclusion)
223
- left = new_from_enumerable_predicate(Veritas::Logic::Predicate::GreaterThanOrEqualTo, inclusion, :first)
224
- right = new_from_enumerable_predicate(Veritas::Logic::Predicate::LessThan, inclusion, :last)
225
- dispatch left.and(right)
226
- end
227
-
228
- # Return the SQL for an Exclusion using an exclusive Range
229
- #
230
- # @param [Logic::Predicate::Exclusion] exclusion
231
- #
232
- # @return [#to_s]
233
- #
234
- # @api private
235
- def exclusive_range_exclusion_sql(exclusion)
236
- left = new_from_enumerable_predicate(Veritas::Logic::Predicate::LessThan, exclusion, :first)
237
- right = new_from_enumerable_predicate(Veritas::Logic::Predicate::GreaterThanOrEqualTo, exclusion, :last)
238
- dispatch left.or(right)
239
- end
240
-
241
- # Instantiate a new Predicate object from an Enumerable Predicate
242
- #
243
- # @param [Class<Logic::Predicate>] klass
244
- # the type of predicate to create
245
- # @param [Logic::Predicate::Enumerable] predicate
246
- # the enumerable predicate
247
- # @param [Symbol] method
248
- # the method to call on the right operand of the predicate
249
- # @return [Logic::Predicate]
250
- #
251
- # @api private
252
- def new_from_enumerable_predicate(klass, predicate, method)
253
- klass.new(predicate.left, predicate.right.send(method))
254
- end
255
-
256
- # Return the expressions for an inequality
257
- #
258
- # @param [Logic::Predicate::Inequality] inequality
259
- #
260
- # @return [Array<#to_s>]
261
- #
262
- # @api private
263
- def inequality_expressions(inequality)
264
- expressions = [
265
- inequality_sql(inequality),
266
- optional_is_null_sql(inequality.left),
267
- optional_is_null_sql(inequality.right),
268
- ]
269
- expressions.compact!
270
- expressions
271
- end
272
-
273
- # Return the SQL for an inequality predicate
274
- #
275
- # @param [Logic::Predicate::Inequality] inequality
276
- #
277
- # @return [#to_s]
278
- #
279
- # @api private
280
- def inequality_sql(inequality)
281
- binary_operation_sql(inequality.right.nil? ? NOT_EQUAL_TO_NULL : NOT_EQUAL_TO, inequality)
282
- end
283
-
284
- # Return the SQL for a Binary Connective
285
- #
286
- # @param [#to_s] operator
287
- #
288
- # @param [Logic::Connective::Binary] binary_connective
289
- #
290
- # @return [#to_s]
291
- #
292
- # @api private
293
- def binary_connective_sql(operator, binary_connective)
294
- "(#{binary_operation_sql(operator, binary_connective)})"
295
- end
296
-
297
- # Return the SQL for a predicate
298
- #
299
- # @param [#to_s] operator
300
- #
301
- # @param [Logic::Predicate] predicate
302
- #
303
- # @return [#to_s]
304
- #
305
- # @api private
306
- def binary_operation_sql(operator, predicate)
307
- "#{dispatch(predicate.left)}#{operator}#{dispatch(predicate.right)}"
308
- end
309
-
310
- # Return the SQL for an operation using an inclusive Range
311
- #
312
- # @param [#to_s] operator
313
- #
314
- # @param [Logic::Predicate::Enumerable] predicate
315
- #
316
- # @return [#to_s]
317
- #
318
- # @api private
319
- def inclusive_range_sql(operator, predicate)
320
- right = predicate.right
321
- "#{dispatch(predicate.left)}#{operator}#{dispatch(right.first)}#{AND}#{dispatch(right.last)}"
322
- end
323
-
324
- # Return SQL for an Equality with a nil value for optional attributes
325
- #
326
- # @param [Attribute] attribute
327
- #
328
- # @return [#to_sql, nil]
329
- #
330
- # @api private
331
- def optional_is_null_sql(attribute)
332
- dispatch(attribute.eq(nil)) if optional?(attribute)
333
- end
334
-
335
- # Test if the object is not required
336
- #
337
- # @param [Object] operand
338
- #
339
- # @return [Boolean]
340
- #
341
- # @api private
342
- def optional?(operand)
343
- operand.respond_to?(:required?) && !operand.required?
344
- end
345
-
346
- end # module Logic
347
- end # module Generator
348
- end # module SQL
349
- end # module Veritas