sqliterate 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -43,13 +43,19 @@ module SQLiterate
43
43
  rule set_predicate_expression
44
44
  exists_expression
45
45
  /
46
- e:test_expression space set_predicate_operator space
47
- '(' space query_expression space ')'
46
+ e:test_expression space set_predicate_operator space set_constructor
48
47
  <Node::SetPredicateExpression>
49
48
  /
50
49
  test_expression
51
50
  end
52
51
 
52
+ rule set_constructor
53
+ '(' space e:query_expression space ')'
54
+ /
55
+ '(' space e:expressions_list space ')'
56
+ <Node::SetConstructor>
57
+ end
58
+
53
59
  rule exists_expression
54
60
  exists_kw space '(' space query_expression space ')'
55
61
  <Node::ExistsExpression>
@@ -96,13 +102,13 @@ module SQLiterate
96
102
  end
97
103
 
98
104
  rule case_when_section
99
- when_kw required_space w:scalar_expression space
100
- then_kw required_space t:scalar_expression
105
+ when_kw space w:scalar_expression space
106
+ then_kw space t:scalar_expression
101
107
  <Node::CaseWhenSection>
102
108
  end
103
109
 
104
110
  rule case_else_section
105
- ( else_kw required_space scalar_expression / space )
111
+ ( else_kw space scalar_expression / space )
106
112
  <Node::CaseElseSection>
107
113
  end
108
114
 
@@ -149,11 +155,11 @@ module SQLiterate
149
155
 
150
156
  rule ordering_specifier
151
157
  ( asc_kw / desc_kw )?
152
- ( required_space nulls_kw required_space ( first_kw / last_kw ) )?
158
+ ( space nulls_kw required_space ( first_kw / last_kw ) )?
153
159
  end
154
160
 
155
161
  rule order_by_clause
156
- ( order_by_kw required_space sort_expressions_list / space ) <Node::OrderByClause>
162
+ ( order_by_kw space sort_expressions_list / space ) <Node::OrderByClause>
157
163
  end
158
164
 
159
165
  rule sort_expressions_list
@@ -210,7 +216,7 @@ module SQLiterate
210
216
  end
211
217
 
212
218
  rule select_query
213
- select_kw required_space
219
+ select_kw space
214
220
  distinct_clause space
215
221
  select_list space
216
222
  table_expression space
@@ -222,7 +228,7 @@ module SQLiterate
222
228
 
223
229
  rule distinct_clause
224
230
  aggregate_specifier (
225
- required_space on_kw required_space '(' space expressions_list space ')'
231
+ required_space on_kw space '(' space expressions_list space ')'
226
232
  )?
227
233
  /
228
234
  space
@@ -256,20 +262,20 @@ module SQLiterate
256
262
  end
257
263
 
258
264
  rule from_clause
259
- ( from_kw required_space table_references / space ) <Node::FromClause>
265
+ ( from_kw space table_references / space ) <Node::FromClause>
260
266
  end
261
267
 
262
268
  rule where_clause
263
- ( where_kw required_space scalar_expression / space ) <Node::WhereClause>
269
+ ( where_kw space scalar_expression / space ) <Node::WhereClause>
264
270
  end
265
271
 
266
272
  rule group_by_clause
267
- ( group_by_kw required_space expressions_list space having_clause / space )
273
+ ( group_by_kw space expressions_list space having_clause / space )
268
274
  <Node::GroupByClause>
269
275
  end
270
276
 
271
277
  rule having_clause
272
- ( having_kw required_space scalar_expression / space ) <Node::HavingClause>
278
+ ( having_kw space scalar_expression / space ) <Node::HavingClause>
273
279
  end
274
280
 
275
281
  rule table_references
@@ -323,15 +329,17 @@ module SQLiterate
323
329
  end
324
330
 
325
331
  rule limit_clause
326
- limit_kw required_space ( digits / all_kw )
327
- /
328
- space
332
+ ( limit_kw required_space all_kw
333
+ /
334
+ limit_kw space scalar_expression
335
+ /
336
+ space )
337
+ <Node::LimitClause>
329
338
  end
330
339
 
331
340
  rule offset_clause
332
- offset_kw required_space digits
333
- /
334
- space
341
+ ( offset_kw space scalar_expression / space )
342
+ <Node::OffsetClause>
335
343
  end
336
344
  end
337
345
  end
@@ -9,7 +9,7 @@ module SQLiterate
9
9
  end
10
10
 
11
11
  rule with_section
12
- (with_kw required_space with_queries / space) <Node::WithSection>
12
+ (with_kw space with_queries / space) <Node::WithSection>
13
13
  end
14
14
 
15
15
  rule with_queries
@@ -17,7 +17,7 @@ module SQLiterate
17
17
  end
18
18
 
19
19
  rule with_query
20
- identifier required_space as_kw required_space '('
20
+ identifier space as_kw space '('
21
21
  space query_expression space
22
22
  ')' <Node::WithQuery>
23
23
  end
@@ -38,6 +38,12 @@ module SQLiterate
38
38
  end
39
39
  end
40
40
 
41
+ module SetConstructor
42
+ def tables
43
+ e.tables
44
+ end
45
+ end
46
+
41
47
  module ExistsExpression
42
48
  def tables
43
49
  query_expression.tables
@@ -219,7 +225,11 @@ module SQLiterate
219
225
 
220
226
  module SelectQuery
221
227
  def tables
222
- select_list.tables + table_expression.tables + order_by_clause.tables
228
+ select_list.tables + \
229
+ table_expression.tables + \
230
+ order_by_clause.tables + \
231
+ limit_clause.tables + \
232
+ offset_clause.tables
223
233
  end
224
234
  end
225
235
 
@@ -302,5 +312,17 @@ module SQLiterate
302
312
  table_reference.table
303
313
  end
304
314
  end
315
+
316
+ module LimitClause
317
+ def tables
318
+ respond_to?(:scalar_expression) ? scalar_expression.tables : []
319
+ end
320
+ end
321
+
322
+ module OffsetClause
323
+ def tables
324
+ respond_to?(:scalar_expression) ? scalar_expression.tables : []
325
+ end
326
+ end
305
327
  end
306
328
  end
@@ -50,7 +50,13 @@ module SQLiterate
50
50
 
51
51
  module SetPredicateExpression
52
52
  def value
53
- [:set, e.value, query_expression.value]
53
+ [:set, e.value, set_constructor.value]
54
+ end
55
+ end
56
+
57
+ module SetConstructor
58
+ def value
59
+ e.value
54
60
  end
55
61
  end
56
62
 
@@ -1,3 +1,3 @@
1
1
  module SQLiterate
2
- VERSION = '0.1.2'
2
+ VERSION = '0.1.3'
3
3
  end
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.2
4
+ version: 0.1.3
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: 2802900881270778442
124
+ hash: 3648950469007697292
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: 2802900881270778442
133
+ hash: 3648950469007697292
134
134
  requirements: []
135
135
  rubyforge_project:
136
136
  rubygems_version: 1.8.23