sqliterate 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/sqliterate/grammar/expression.treetop +96 -12
- data/lib/sqliterate/grammar/keywords.treetop +43 -1
- data/lib/sqliterate/grammar/operator.treetop +39 -9
- data/lib/sqliterate/node/control/expression.rb +121 -7
- data/lib/sqliterate/node/evaluate/expression.rb +78 -11
- data/lib/sqliterate/node/evaluate/operator.rb +6 -6
- data/lib/sqliterate/version.rb +1 -1
- metadata +3 -3
@@ -7,6 +7,61 @@ module SQLiterate
|
|
7
7
|
include Operator
|
8
8
|
|
9
9
|
rule scalar_expression
|
10
|
+
disjunction_expression
|
11
|
+
end
|
12
|
+
|
13
|
+
rule disjunction_expression
|
14
|
+
e:conjunction_expression r:( space or_kw space e:conjunction_expression )*
|
15
|
+
<Node::DisjunctionExpression>
|
16
|
+
end
|
17
|
+
|
18
|
+
rule conjunction_expression
|
19
|
+
e:negation_expression r:( space and_kw space e:negation_expression )*
|
20
|
+
<Node::ConjunctionExpression>
|
21
|
+
end
|
22
|
+
|
23
|
+
rule negation_expression
|
24
|
+
not_kw space e:equality_expression <Node::NegationExpression>
|
25
|
+
/
|
26
|
+
equality_expression
|
27
|
+
end
|
28
|
+
|
29
|
+
rule equality_expression
|
30
|
+
e:between_expression r:( space '=' space e:between_expression )*
|
31
|
+
<Node::EqualityExpression>
|
32
|
+
end
|
33
|
+
|
34
|
+
rule between_expression
|
35
|
+
e:set_predicate_expression r:( space
|
36
|
+
( not_kw space )? between_kw space ( symmetric_kw space )?
|
37
|
+
l:set_predicate_expression space and_kw space
|
38
|
+
r:set_predicate_expression
|
39
|
+
)*
|
40
|
+
<Node::BetweenExpression>
|
41
|
+
end
|
42
|
+
|
43
|
+
rule set_predicate_expression
|
44
|
+
exists_expression
|
45
|
+
/
|
46
|
+
e:test_expression space set_predicate_operator space
|
47
|
+
'(' space query_expression space ')'
|
48
|
+
<Node::SetPredicateExpression>
|
49
|
+
/
|
50
|
+
test_expression
|
51
|
+
end
|
52
|
+
|
53
|
+
rule exists_expression
|
54
|
+
exists_kw space '(' space query_expression space ')'
|
55
|
+
<Node::ExistsExpression>
|
56
|
+
end
|
57
|
+
|
58
|
+
rule test_expression
|
59
|
+
l:gen_expression space binary_test_operator space r:gen_expression
|
60
|
+
<Node::TestExpression::Binary>
|
61
|
+
/
|
62
|
+
e:gen_expression space unary_test_operator
|
63
|
+
<Node::TestExpression::Unary>
|
64
|
+
/
|
10
65
|
gen_expression
|
11
66
|
end
|
12
67
|
|
@@ -21,13 +76,34 @@ module SQLiterate
|
|
21
76
|
rule gen_value
|
22
77
|
literal_value <Node::GenValue::Literal>
|
23
78
|
/
|
24
|
-
function_call
|
79
|
+
function_call
|
25
80
|
/
|
26
81
|
field_selection r:( space '['
|
27
82
|
space range_expression space
|
28
83
|
']' )+ <Node::GenValue::Subscript>
|
29
84
|
/
|
30
|
-
field_selection
|
85
|
+
field_selection
|
86
|
+
/
|
87
|
+
case_expression
|
88
|
+
end
|
89
|
+
|
90
|
+
rule case_expression
|
91
|
+
case_kw required_space
|
92
|
+
case_when_section r:( space case_when_section )* space
|
93
|
+
case_else_section space
|
94
|
+
end_kw
|
95
|
+
<Node::CaseExpression>
|
96
|
+
end
|
97
|
+
|
98
|
+
rule case_when_section
|
99
|
+
when_kw required_space w:scalar_expression space
|
100
|
+
then_kw required_space t:scalar_expression
|
101
|
+
<Node::CaseWhenSection>
|
102
|
+
end
|
103
|
+
|
104
|
+
rule case_else_section
|
105
|
+
( else_kw required_space scalar_expression / space )
|
106
|
+
<Node::CaseElseSection>
|
31
107
|
end
|
32
108
|
|
33
109
|
rule function_call
|
@@ -77,12 +153,19 @@ module SQLiterate
|
|
77
153
|
end
|
78
154
|
|
79
155
|
rule order_by_clause
|
80
|
-
( order_by_kw
|
81
|
-
|
156
|
+
( order_by_kw required_space sort_expressions_list / space ) <Node::OrderByClause>
|
157
|
+
end
|
158
|
+
|
159
|
+
rule sort_expressions_list
|
160
|
+
sort_expression r:( space ',' space sort_expression)* <Node::SortExpressionsList>
|
161
|
+
end
|
162
|
+
|
163
|
+
rule sort_expression
|
164
|
+
scalar_expression space ordering_specifier <Node::SortExpression>
|
82
165
|
end
|
83
166
|
|
84
167
|
rule expressions_list
|
85
|
-
|
168
|
+
scalar_expression r:( space ',' space scalar_expression)* <Node::ExpressionsList>
|
86
169
|
end
|
87
170
|
|
88
171
|
rule range_expression
|
@@ -102,9 +185,9 @@ module SQLiterate
|
|
102
185
|
end
|
103
186
|
|
104
187
|
rule row_value
|
105
|
-
'(' query_expression ')' <Node::RowValue::Query>
|
188
|
+
'(' space query_expression space ')' <Node::RowValue::Query>
|
106
189
|
/
|
107
|
-
'(' space
|
190
|
+
'(' space scalar_expression space ')' <Node::RowValue::Expression>
|
108
191
|
/
|
109
192
|
positional_param <Node::RowValue::Positional>
|
110
193
|
/
|
@@ -155,7 +238,7 @@ module SQLiterate
|
|
155
238
|
end
|
156
239
|
|
157
240
|
rule named_expression
|
158
|
-
|
241
|
+
scalar_expression ( space (as_kw space)? column_name )? <Node::NamedExpression>
|
159
242
|
end
|
160
243
|
|
161
244
|
rule table_reference
|
@@ -173,19 +256,20 @@ module SQLiterate
|
|
173
256
|
end
|
174
257
|
|
175
258
|
rule from_clause
|
176
|
-
(from_kw required_space table_references / space) <Node::FromClause>
|
259
|
+
( from_kw required_space table_references / space ) <Node::FromClause>
|
177
260
|
end
|
178
261
|
|
179
262
|
rule where_clause
|
180
|
-
where_kw required_space scalar_expression / space
|
263
|
+
( where_kw required_space scalar_expression / space ) <Node::WhereClause>
|
181
264
|
end
|
182
265
|
|
183
266
|
rule group_by_clause
|
184
|
-
group_by_kw required_space expressions_list space having_clause / space
|
267
|
+
( group_by_kw required_space expressions_list space having_clause / space )
|
268
|
+
<Node::GroupByClause>
|
185
269
|
end
|
186
270
|
|
187
271
|
rule having_clause
|
188
|
-
having_kw required_space scalar_expression / space
|
272
|
+
( having_kw required_space scalar_expression / space ) <Node::HavingClause>
|
189
273
|
end
|
190
274
|
|
191
275
|
rule table_references
|
@@ -10,7 +10,9 @@ module SQLiterate
|
|
10
10
|
bigint_kw / boolean_kw / double_kw / float_kw / int_kw / real_kw /
|
11
11
|
smallint_kw / string_kw / timestamp_kw / tinyint_kw / integer_kw /
|
12
12
|
group_kw / having_kw / nulls_kw / first_kw / last_kw / union_kw /
|
13
|
-
intersect_kw / except_kw / limit_kw / offset_kw
|
13
|
+
intersect_kw / except_kw / limit_kw / offset_kw /
|
14
|
+
case_kw / when_kw / then_kw / else_kw / end_kw / symmetric_kw /
|
15
|
+
unknown_kw / exists_kw / any_kw / some_kw
|
14
16
|
end
|
15
17
|
|
16
18
|
rule type_name
|
@@ -259,5 +261,45 @@ module SQLiterate
|
|
259
261
|
rule offset_kw
|
260
262
|
[oO] [fF] [fF] [sS] [eE] [tT] kw_sep
|
261
263
|
end
|
264
|
+
|
265
|
+
rule case_kw
|
266
|
+
[cC] [aA] [sS] [eE] kw_sep
|
267
|
+
end
|
268
|
+
|
269
|
+
rule when_kw
|
270
|
+
[wW] [hH] [eE] [nN] kw_sep
|
271
|
+
end
|
272
|
+
|
273
|
+
rule then_kw
|
274
|
+
[tT] [hH] [eE] [nN] kw_sep
|
275
|
+
end
|
276
|
+
|
277
|
+
rule else_kw
|
278
|
+
[eE] [lL] [sS] [eE] kw_sep
|
279
|
+
end
|
280
|
+
|
281
|
+
rule end_kw
|
282
|
+
[eE] [nN] [dD] kw_sep
|
283
|
+
end
|
284
|
+
|
285
|
+
rule symmetric_kw
|
286
|
+
[sS] [yY] [mM] [mM] [eE] [tT] [rR] [iI] [cC] kw_sep
|
287
|
+
end
|
288
|
+
|
289
|
+
rule unknown_kw
|
290
|
+
[uU] [nN] [kK] [nN] [oO] [wW] [nN] kw_sep
|
291
|
+
end
|
292
|
+
|
293
|
+
rule exists_kw
|
294
|
+
[eE] [xX] [iI] [sS] [tT] [sS] kw_sep
|
295
|
+
end
|
296
|
+
|
297
|
+
rule any_kw
|
298
|
+
[aA] [nN] [yY] kw_sep
|
299
|
+
end
|
300
|
+
|
301
|
+
rule some_kw
|
302
|
+
[sS] [oO] [mM] [eE] kw_sep
|
303
|
+
end
|
262
304
|
end
|
263
305
|
end
|
@@ -5,16 +5,14 @@ module SQLiterate
|
|
5
5
|
include Keywords
|
6
6
|
|
7
7
|
rule gen_operator
|
8
|
-
symbol_operator
|
9
|
-
end
|
10
|
-
|
11
|
-
rule keyword_operator
|
12
|
-
( and_kw / or_kw / not_kw ) <Node::KeywordOperator>
|
8
|
+
symbol_operator
|
13
9
|
end
|
14
10
|
|
15
11
|
rule symbol_operator
|
16
12
|
sign_ending_operator
|
17
13
|
/
|
14
|
+
comparison_operator
|
15
|
+
/
|
18
16
|
nonsign_ending_operator
|
19
17
|
/
|
20
18
|
ambiguous_operator
|
@@ -22,10 +20,6 @@ module SQLiterate
|
|
22
20
|
single_char_operator
|
23
21
|
end
|
24
22
|
|
25
|
-
rule single_char_operator
|
26
|
-
c:op_char <Node::SingleCharOperator>
|
27
|
-
end
|
28
|
-
|
29
23
|
rule sign_ending_operator
|
30
24
|
b:( r:( basic_op_char !special_op_char )* basic_op_char )? special_op_char
|
31
25
|
o:( r:( op_char !(sign_op_char !op_char) )* op_char )? sign_op_char !op_char
|
@@ -33,15 +27,22 @@ module SQLiterate
|
|
33
27
|
end
|
34
28
|
|
35
29
|
rule nonsign_ending_operator
|
30
|
+
!comparison_operator
|
36
31
|
r:( op_char !(nonsign_op_char !op_char) )* op_char nonsign_op_char !op_char
|
37
32
|
<Node::NonsignEndingOperator>
|
38
33
|
end
|
39
34
|
|
40
35
|
rule ambiguous_operator
|
36
|
+
!comparison_operator
|
41
37
|
r:( op_char !(sign_op_char !op_char) )* op_char
|
42
38
|
<Node::AmbiguousOperator>
|
43
39
|
end
|
44
40
|
|
41
|
+
rule single_char_operator
|
42
|
+
!comparison_operator
|
43
|
+
c:op_char <Node::SingleCharOperator>
|
44
|
+
end
|
45
|
+
|
45
46
|
rule sign_op_char
|
46
47
|
c:[+\-] comment* <Node::OperatorChar>
|
47
48
|
end
|
@@ -61,5 +62,34 @@ module SQLiterate
|
|
61
62
|
rule op_char
|
62
63
|
c:[+\-*/<>=~!@#%^&|`?] comment* <Node::OperatorChar>
|
63
64
|
end
|
65
|
+
|
66
|
+
rule comparison_operator
|
67
|
+
o:( '>=' / '<=' / '<>' / '!=' / '=' / '>' / '<' ) comment* !nonsign_op_char
|
68
|
+
<Node::ComparisonOperator>
|
69
|
+
end
|
70
|
+
|
71
|
+
rule binary_test_operator
|
72
|
+
is_kw space ( not_kw space )? distinct_kw space from_kw
|
73
|
+
end
|
74
|
+
|
75
|
+
rule unary_test_operator
|
76
|
+
is_kw space ( not_kw space )? null_kw
|
77
|
+
/
|
78
|
+
isnull_kw
|
79
|
+
/
|
80
|
+
notnull_kw
|
81
|
+
/
|
82
|
+
is_kw space ( not_kw space )? true_kw
|
83
|
+
/
|
84
|
+
is_kw space ( not_kw space )? false_kw
|
85
|
+
/
|
86
|
+
is_kw space ( not_kw space )? unknown_kw
|
87
|
+
end
|
88
|
+
|
89
|
+
rule set_predicate_operator
|
90
|
+
( not_kw space )? in_kw
|
91
|
+
/
|
92
|
+
comparison_operator space ( any_kw / some_kw / all_kw )
|
93
|
+
end
|
64
94
|
end
|
65
95
|
end
|
@@ -1,5 +1,62 @@
|
|
1
1
|
module SQLiterate
|
2
2
|
module Node
|
3
|
+
module DisjunctionExpression
|
4
|
+
def tables
|
5
|
+
e.tables + r.elements.flat_map { |e| e.e.tables }
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
module ConjunctionExpression
|
10
|
+
def tables
|
11
|
+
e.tables + r.elements.flat_map { |e| e.e.tables }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
module NegationExpression
|
16
|
+
def tables
|
17
|
+
e.tables
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
module EqualityExpression
|
22
|
+
def tables
|
23
|
+
e.tables + r.elements.flat_map { |e| e.e.tables }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
module BetweenExpression
|
28
|
+
def tables
|
29
|
+
e.tables + r.elements.flat_map do |e|
|
30
|
+
e.l.tables + e.r.tables
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
module SetPredicateExpression
|
36
|
+
def tables
|
37
|
+
e.tables + query_expression.tables
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
module ExistsExpression
|
42
|
+
def tables
|
43
|
+
query_expression.tables
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
module TestExpression
|
48
|
+
module Binary
|
49
|
+
def tables
|
50
|
+
l.tables + r.tables
|
51
|
+
end
|
52
|
+
end
|
53
|
+
module Unary
|
54
|
+
def tables
|
55
|
+
e.tables
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
3
60
|
module GenExpression
|
4
61
|
def tables
|
5
62
|
gen_value.tables + r.elements.flat_map { |e| e.gen_value.tables }
|
@@ -21,6 +78,27 @@ module SQLiterate
|
|
21
78
|
end
|
22
79
|
end
|
23
80
|
|
81
|
+
module CaseExpression
|
82
|
+
def tables
|
83
|
+
case_else_section.tables + \
|
84
|
+
case_when_section.tables + r.elements.flat_map do |e|
|
85
|
+
e.case_when_section.tables
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
module CaseWhenSection
|
91
|
+
def tables
|
92
|
+
w.tables + t.tables
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
module CaseElseSection
|
97
|
+
def tables
|
98
|
+
respond_to?(:scalar_expression) ? scalar_expression.tables : []
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
24
102
|
module FunctionCall
|
25
103
|
def tables
|
26
104
|
function_params.tables
|
@@ -47,14 +125,28 @@ module SQLiterate
|
|
47
125
|
|
48
126
|
module OrderByClause
|
49
127
|
def tables
|
50
|
-
respond_to?(:
|
128
|
+
respond_to?(:sort_expressions_list) ? sort_expressions_list.tables : []
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
module SortExpressionsList
|
133
|
+
def tables
|
134
|
+
sort_expression.tables + r.elements.flat_map do |e|
|
135
|
+
e.sort_expression.tables
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
module SortExpression
|
141
|
+
def tables
|
142
|
+
scalar_expression.tables
|
51
143
|
end
|
52
144
|
end
|
53
145
|
|
54
146
|
module ExpressionsList
|
55
147
|
def tables
|
56
|
-
|
57
|
-
e.
|
148
|
+
scalar_expression.tables + r.elements.flat_map do |e|
|
149
|
+
e.scalar_expression.tables
|
58
150
|
end
|
59
151
|
end
|
60
152
|
end
|
@@ -69,7 +161,7 @@ module SQLiterate
|
|
69
161
|
|
70
162
|
module NamedExpression
|
71
163
|
def tables
|
72
|
-
|
164
|
+
scalar_expression.tables
|
73
165
|
end
|
74
166
|
end
|
75
167
|
|
@@ -99,7 +191,7 @@ module SQLiterate
|
|
99
191
|
end
|
100
192
|
module Expression
|
101
193
|
def tables
|
102
|
-
|
194
|
+
scalar_expression.tables
|
103
195
|
end
|
104
196
|
end
|
105
197
|
module Identifier
|
@@ -127,13 +219,13 @@ module SQLiterate
|
|
127
219
|
|
128
220
|
module SelectQuery
|
129
221
|
def tables
|
130
|
-
select_list.tables + table_expression.tables
|
222
|
+
select_list.tables + table_expression.tables + order_by_clause.tables
|
131
223
|
end
|
132
224
|
end
|
133
225
|
|
134
226
|
module TableExpression
|
135
227
|
def tables
|
136
|
-
from_clause.tables
|
228
|
+
from_clause.tables + where_clause.tables + group_by_clause.tables
|
137
229
|
end
|
138
230
|
end
|
139
231
|
|
@@ -143,6 +235,28 @@ module SQLiterate
|
|
143
235
|
end
|
144
236
|
end
|
145
237
|
|
238
|
+
module WhereClause
|
239
|
+
def tables
|
240
|
+
respond_to?(:scalar_expression) ? scalar_expression.tables : []
|
241
|
+
end
|
242
|
+
end
|
243
|
+
|
244
|
+
module GroupByClause
|
245
|
+
def tables
|
246
|
+
if respond_to?(:expressions_list)
|
247
|
+
expressions_list.tables + having_clause.tables
|
248
|
+
else
|
249
|
+
[]
|
250
|
+
end
|
251
|
+
end
|
252
|
+
end
|
253
|
+
|
254
|
+
module HavingClause
|
255
|
+
def tables
|
256
|
+
respond_to?(:scalar_expression) ? scalar_expression.tables : []
|
257
|
+
end
|
258
|
+
end
|
259
|
+
|
146
260
|
module TableReferences
|
147
261
|
def tables
|
148
262
|
table_joins.tables + r.elements.flat_map { |e| e.table_joins.tables }
|
@@ -1,5 +1,78 @@
|
|
1
1
|
module SQLiterate
|
2
2
|
module Node
|
3
|
+
module DisjunctionExpression
|
4
|
+
def value
|
5
|
+
if r.empty?
|
6
|
+
e.value
|
7
|
+
else
|
8
|
+
[:or, e.value ] + r.elements.flat_map { |e| e.e.value }
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
module ConjunctionExpression
|
14
|
+
def value
|
15
|
+
if r.empty?
|
16
|
+
e.value
|
17
|
+
else
|
18
|
+
[:and, e.value ] + r.elements.flat_map { |e| e.e.value }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
module NegationExpression
|
24
|
+
def value
|
25
|
+
[:not, e.value]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
module EqualityExpression
|
30
|
+
def value
|
31
|
+
if r.empty?
|
32
|
+
e.value
|
33
|
+
else
|
34
|
+
[:eq, e.value ] + r.elements.flat_map { |e| e.e.value }
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
module BetweenExpression
|
40
|
+
def value
|
41
|
+
if r.empty?
|
42
|
+
e.value
|
43
|
+
else
|
44
|
+
[:b, gen_expression.value] + r.elements.flat_map do |e|
|
45
|
+
[e.l.value, e.r.value]
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
module SetPredicateExpression
|
52
|
+
def value
|
53
|
+
[:set, e.value, query_expression.value]
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
module ExistsExpression
|
58
|
+
def value
|
59
|
+
[:exists, query_expression.value]
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
module TestExpression
|
64
|
+
module Binary
|
65
|
+
def value
|
66
|
+
[:test, l.value, r.value]
|
67
|
+
end
|
68
|
+
end
|
69
|
+
module Unary
|
70
|
+
def value
|
71
|
+
[:test, e.value]
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
3
76
|
module GenExpression
|
4
77
|
def value
|
5
78
|
h.elements.map { |e| e.gen_operator.operator } +
|
@@ -12,10 +85,6 @@ module SQLiterate
|
|
12
85
|
end
|
13
86
|
|
14
87
|
module GenValue
|
15
|
-
module Literal
|
16
|
-
end
|
17
|
-
module Function
|
18
|
-
end
|
19
88
|
module Subscript
|
20
89
|
def value
|
21
90
|
[:s, field_selection.value] + r.elements.map do |e|
|
@@ -23,8 +92,6 @@ module SQLiterate
|
|
23
92
|
end
|
24
93
|
end
|
25
94
|
end
|
26
|
-
module Field
|
27
|
-
end
|
28
95
|
end
|
29
96
|
|
30
97
|
module FunctionCall
|
@@ -59,8 +126,8 @@ module SQLiterate
|
|
59
126
|
|
60
127
|
module ExpressionsList
|
61
128
|
def value
|
62
|
-
[
|
63
|
-
e.
|
129
|
+
[scalar_expression.value] + r.elements.map do |e|
|
130
|
+
e.scalar_expression.value
|
64
131
|
end
|
65
132
|
end
|
66
133
|
end
|
@@ -76,9 +143,9 @@ module SQLiterate
|
|
76
143
|
module NamedExpression
|
77
144
|
def value
|
78
145
|
if respond_to?(:column_name)
|
79
|
-
[column_name.name,
|
146
|
+
[column_name.name, scalar_expression.value]
|
80
147
|
else
|
81
|
-
|
148
|
+
scalar_expression.value
|
82
149
|
end
|
83
150
|
end
|
84
151
|
end
|
@@ -109,7 +176,7 @@ module SQLiterate
|
|
109
176
|
end
|
110
177
|
module Expression
|
111
178
|
def value
|
112
|
-
|
179
|
+
scalar_expression.value
|
113
180
|
end
|
114
181
|
end
|
115
182
|
module Positional
|
@@ -1,11 +1,5 @@
|
|
1
1
|
module SQLiterate
|
2
2
|
module Node
|
3
|
-
module KeywordOperator
|
4
|
-
def operator
|
5
|
-
text_value.to_sym
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
3
|
module OperatorChar
|
10
4
|
def char
|
11
5
|
c.text_value
|
@@ -47,5 +41,11 @@ module SQLiterate
|
|
47
41
|
( r.elements.map { |e| e.op_char.char } + [op_char.char] ).join.to_sym
|
48
42
|
end
|
49
43
|
end
|
44
|
+
|
45
|
+
module ComparisonOperator
|
46
|
+
def operator
|
47
|
+
o.text_value.to_sym
|
48
|
+
end
|
49
|
+
end
|
50
50
|
end
|
51
51
|
end
|
data/lib/sqliterate/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sqliterate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -121,7 +121,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
121
121
|
version: '0'
|
122
122
|
segments:
|
123
123
|
- 0
|
124
|
-
hash:
|
124
|
+
hash: 2802900881270778442
|
125
125
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
126
126
|
none: false
|
127
127
|
requirements:
|
@@ -130,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
130
|
version: '0'
|
131
131
|
segments:
|
132
132
|
- 0
|
133
|
-
hash:
|
133
|
+
hash: 2802900881270778442
|
134
134
|
requirements: []
|
135
135
|
rubyforge_project:
|
136
136
|
rubygems_version: 1.8.23
|