activerecord-alt-mongo-adapter 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README ADDED
@@ -0,0 +1,101 @@
1
+ = ActiveTokyoCabinet
2
+
3
+ Copyright (c) 2010 SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
4
+
5
+ == Description
6
+
7
+ activerecord-alt-mongo-adapter is a MongoDB adapter for ActiveRecord.
8
+
9
+ activerecord-alt-mongo-adapter on MongoDB Ruby Driver.
10
+
11
+ see http://www.mongodb.org/display/DOCS/Home , http://api.mongodb.org/ruby/0.18.3/index.html
12
+
13
+ == Project Page
14
+
15
+ http://rubyforge.org/projects/araltmongo/
16
+
17
+ == Install
18
+
19
+ gem install activerecord-alt-mongo-adapter
20
+
21
+ == Example
22
+ === database.yml
23
+
24
+ development:
25
+ adapter: mongo,
26
+ host: localhost
27
+ port: 27017
28
+ database: scott
29
+
30
+ === Model
31
+
32
+ class Emp < ActiveRecord::Base
33
+ include ActiveMongo::Collection
34
+ # There is no need to define a schema.
35
+ end
36
+
37
+ === ActiveRecord API
38
+
39
+ # see http://api.rubyonrails.org/classes/ActiveRecord/Base.html
40
+
41
+ emp = Emp.find(:first,
42
+ :conditions => ["job = ? and sal >= ?", "MANAGER", 2800],
43
+ :order => 'sal desc', :limit => 3, :offset => 1)
44
+
45
+ p emp.id #=> "4bb795e8f15d3d0324000006"
46
+ emp.age = 30
47
+ emp.save
48
+
49
+ emp_list = Emp.find(:all, :conditions => {:empno => [7654, 7698, 7782]})
50
+
51
+ emp_list.each do |i|
52
+ i.destroy if i.sal < 2000
53
+ end
54
+
55
+ new_emp = Emp.new
56
+ new_emp.empno = 8000
57
+ new_emp.ename = 'YAMADA'
58
+ new_emp.age = 27
59
+ new_emp.save!
60
+
61
+ # not available:
62
+ # - :include, :group
63
+ # - `OR'
64
+ # - Include `ID' in search condition
65
+ # http://araltmongo.rubyforge.org/svn/trunk/lib/active_mongo/sqlparser.y
66
+
67
+ === Expanded operator
68
+
69
+ # see http://www.mongodb.org/display/DOCS/Advanced+Queries
70
+
71
+ emp = Emp.find(:all, :conditions => ['job regexp ?', 'LE'])
72
+
73
+ emp = Emp.find(:all, :conditions => ['empno mod ?', [2, 0]])
74
+
75
+ emp = Emp.find(:all, :conditions => ['foo exists ?', true])
76
+
77
+ === Low layer API
78
+
79
+ coll = Emp.collection
80
+
81
+ m =<<-EOS
82
+ function() {
83
+ emit(this.job, 1);
84
+ }
85
+ EOS
86
+
87
+ r =<<-EOS
88
+ function(k, vals) {
89
+ var sum = 0;
90
+
91
+ for(var i in vals) {
92
+ sum += vals[i];
93
+ }
94
+
95
+ return sum;
96
+ }
97
+ EOS
98
+
99
+ coll.map_reduce(m, r).find.each do |i|
100
+ # do anything
101
+ end
@@ -0,0 +1,73 @@
1
+ module ActiveMongo
2
+ module Collection
3
+ def self.included(mod)
4
+ mod.instance_eval %{
5
+ primary_key = ActiveRecord::ConnectionAdapters::Column.new('id', nil)
6
+ primary_key.primary = true
7
+ @columns = [primary_key]
8
+
9
+ class_eval(<<-EOS)
10
+ @@__with_timestamp = false
11
+
12
+ alias :__respond_to? :respond_to?
13
+
14
+ def attributes_with_quotes(include_primary_key = true, include_readonly_attributes = true, attribute_names = @attributes.keys)
15
+ quoted = {}
16
+ connection = self.class.connection
17
+
18
+ __attributes = (attributes || {}).merge(@__attributes || {})
19
+ __attributes.delete('id')
20
+ __attributes.delete('_id')
21
+
22
+ if @@__with_timestamp == :on
23
+ %w(created_at updated_at).each {|i| __attributes.delete(i) }
24
+ elsif @@__with_timestamp
25
+ %w(created_on updated_on).each {|i| __attributes.delete(i) }
26
+ else
27
+ %w(created_on updated_on created_at updated_at).each do |i|
28
+ __attributes.delete(i)
29
+ end
30
+ end
31
+
32
+ __attributes.each do |name, value|
33
+ quoted[name] = connection.quote(value)
34
+ end
35
+
36
+ quoted
37
+ end
38
+
39
+ def respond_to?(name, priv = false); true; end
40
+
41
+ def method_missing(name, *args, &block)
42
+ @__attributes ||= {}
43
+ name = name.to_s
44
+
45
+ if __respond_to?(name)
46
+ super
47
+ elsif name =~ /\\\\A(.+)=\\\\Z/ and args.length == 1
48
+ @__attributes[$1] = args[0]
49
+ elsif name =~ /[^=]\\\\Z/ and args.length == 0
50
+ @__attributes[$1]
51
+ else
52
+ raise NoMethodError, "undefined method `\\\#{name}' for \#{name}"
53
+ super
54
+ end
55
+ end
56
+ EOS
57
+
58
+ def with_timestamp(value = true)
59
+ class_eval(<<-EOS)
60
+ @@__with_timestamp = \#{value}
61
+ EOS
62
+ end
63
+ }
64
+
65
+ mod.instance_eval %{
66
+ def collection
67
+ coll = self.connection.raw_connection.collection(self.table_name)
68
+ block_given? ? yield(coll) : coll
69
+ end
70
+ }
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,760 @@
1
+ #
2
+ # DO NOT MODIFY!!!!
3
+ # This file is automatically generated by racc 1.4.5
4
+ # from racc grammer file "sqlparser.y".
5
+ #
6
+
7
+ require 'racc/parser'
8
+
9
+
10
+
11
+ require 'strscan'
12
+
13
+ module ActiveMongo
14
+
15
+
16
+ class SQLParser < Racc::Parser
17
+
18
+ module_eval <<'..end sqlparser.y modeval..idb280b00f18', 'sqlparser.y', 219
19
+
20
+ KEYWORDS = %w(
21
+ AND
22
+ AS
23
+ ASC
24
+ BETWEEN
25
+ BY
26
+ COUNT
27
+ DELETE
28
+ DESC
29
+ DISTINCT
30
+ EXISTS
31
+ FROM
32
+ IN
33
+ INSERT
34
+ INTO
35
+ LIMIT
36
+ MOD
37
+ NOT
38
+ OFFSET
39
+ ORDER
40
+ REGEXP
41
+ SELECT
42
+ SET
43
+ UPDATE
44
+ VALUES
45
+ WHERE
46
+ )
47
+
48
+ KEYWORD_REGEXP = Regexp.compile("(?:#{KEYWORDS.join '|'})\\b", Regexp::IGNORECASE)
49
+
50
+ def initialize(obj)
51
+ src = obj.is_a?(IO) ? obj.read : obj.to_s
52
+ @ss = StringScanner.new(src)
53
+ end
54
+
55
+ def scan
56
+ piece = nil
57
+
58
+ until @ss.eos?
59
+ if (tok = @ss.scan /\s+/)
60
+ # nothing to do
61
+ elsif (tok = @ss.scan /(?:<>|!=|>=|<=|>|<|=)/)
62
+ yield tok, tok
63
+ elsif (tok = @ss.scan KEYWORD_REGEXP)
64
+ yield tok.upcase.to_sym, tok
65
+ elsif (tok = @ss.scan /NULL\b/i)
66
+ yield :NULL, nil
67
+ elsif (tok = @ss.scan /'(?:[^']|'')*'/) #'
68
+ yield :STRING, tok.slice(1...-1).gsub(/''/, "'")
69
+ elsif (tok = @ss.scan /-?(?:0|[1-9]\d*)(?:\.\d+)/)
70
+ yield :NUMBER, tok.to_f
71
+ elsif (tok = @ss.scan /-?(?:0|[1-9]\d*)/)
72
+ yield :NUMBER, tok.to_i
73
+ elsif (tok = @ss.scan /[,\(\)\*]/)
74
+ yield tok, tok
75
+ elsif (tok = @ss.scan /(?:[a-z_]\w+\.|[a-z]\.)*ID\b/i)
76
+ yield :ID, tok
77
+ elsif (tok = @ss.scan /(?:[a-z_]\w+\.|[a-z]\.)*(?:[a-z_]\w+|[a-z])/i)
78
+ yield :IDENTIFIER, tok
79
+ else
80
+ raise Racc::ParseError, ('parse error on value "%s"' % @ss.rest.inspect)
81
+ end
82
+ end
83
+
84
+ yield false, '$'
85
+ end
86
+ private :scan
87
+
88
+ def parse
89
+ yyparse self, :scan
90
+ end
91
+
92
+ ..end sqlparser.y modeval..idb280b00f18
93
+
94
+ ##### racc 1.4.5 generates ###
95
+
96
+ racc_reduce_table = [
97
+ 0, 0, :racc_error,
98
+ 1, 44, :_reduce_none,
99
+ 1, 44, :_reduce_none,
100
+ 1, 44, :_reduce_none,
101
+ 1, 44, :_reduce_none,
102
+ 10, 45, :_reduce_5,
103
+ 8, 46, :_reduce_6,
104
+ 6, 46, :_reduce_7,
105
+ 8, 46, :_reduce_8,
106
+ 4, 57, :_reduce_9,
107
+ 6, 57, :_reduce_10,
108
+ 1, 58, :_reduce_none,
109
+ 1, 58, :_reduce_none,
110
+ 1, 52, :_reduce_13,
111
+ 1, 52, :_reduce_none,
112
+ 0, 53, :_reduce_15,
113
+ 2, 53, :_reduce_16,
114
+ 2, 53, :_reduce_17,
115
+ 1, 59, :_reduce_none,
116
+ 3, 59, :_reduce_19,
117
+ 3, 61, :_reduce_20,
118
+ 5, 61, :_reduce_21,
119
+ 1, 60, :_reduce_22,
120
+ 3, 60, :_reduce_23,
121
+ 1, 63, :_reduce_none,
122
+ 3, 63, :_reduce_25,
123
+ 3, 64, :_reduce_26,
124
+ 4, 64, :_reduce_27,
125
+ 5, 64, :_reduce_28,
126
+ 6, 64, :_reduce_29,
127
+ 1, 64, :_reduce_none,
128
+ 1, 64, :_reduce_none,
129
+ 5, 66, :_reduce_32,
130
+ 6, 67, :_reduce_33,
131
+ 0, 54, :_reduce_34,
132
+ 4, 54, :_reduce_35,
133
+ 0, 68, :_reduce_36,
134
+ 1, 68, :_reduce_none,
135
+ 0, 55, :_reduce_38,
136
+ 2, 55, :_reduce_39,
137
+ 0, 56, :_reduce_40,
138
+ 2, 56, :_reduce_41,
139
+ 5, 47, :_reduce_42,
140
+ 1, 70, :_reduce_none,
141
+ 3, 70, :_reduce_44,
142
+ 3, 71, :_reduce_45,
143
+ 4, 48, :_reduce_46,
144
+ 1, 49, :_reduce_none,
145
+ 1, 50, :_reduce_48,
146
+ 3, 50, :_reduce_49,
147
+ 1, 62, :_reduce_none,
148
+ 1, 62, :_reduce_none,
149
+ 1, 62, :_reduce_none,
150
+ 1, 51, :_reduce_53,
151
+ 3, 51, :_reduce_54,
152
+ 1, 65, :_reduce_55,
153
+ 1, 65, :_reduce_56,
154
+ 1, 65, :_reduce_57,
155
+ 1, 65, :_reduce_58,
156
+ 1, 65, :_reduce_59,
157
+ 1, 65, :_reduce_60,
158
+ 1, 65, :_reduce_61,
159
+ 1, 65, :_reduce_62,
160
+ 1, 65, :_reduce_63,
161
+ 1, 65, :_reduce_64,
162
+ 1, 65, :_reduce_65,
163
+ 1, 69, :_reduce_66,
164
+ 1, 69, :_reduce_67 ]
165
+
166
+ racc_reduce_n = 68
167
+
168
+ racc_shift_n = 140
169
+
170
+ racc_action_table = [
171
+ 102, 126, 117, 129, 98, 31, 71, 3, 69, 70,
172
+ 133, 134, 9, 13, 62, 13, 88, 136, 138, 65,
173
+ 56, 65, 71, 125, 63, 125, 67, 68, 67, 68,
174
+ 5, 13, 50, 8, 78, 81, 56, 84, 85, 125,
175
+ 125, 139, 28, 27, 41, 88, 27, 13, 71, 13,
176
+ 51, 86, 74, 75, 76, 77, 79, 80, 82, 83,
177
+ 50, 13, 56, 125, 56, 78, 81, 35, 90, 65,
178
+ 90, 20, 21, 13, 15, 13, 67, 68, 35, 94,
179
+ 95, 45, 86, 74, 75, 76, 77, 79, 80, 82,
180
+ 83, 13, 65, 35, 65, 97, 65, 26, 65, 67,
181
+ 68, 67, 68, 67, 68, 67, 68, 65, 13, 65,
182
+ 99, 65, 100, 65, 67, 68, 67, 68, 67, 68,
183
+ 67, 68, 65, 35, 13, 24, 13, 106, 107, 67,
184
+ 68, 107, 13, 111, 30, 22, 115, 47, 13, 13,
185
+ 120, 122, 122, 40, 14, 13, 13, 13, 13, 35,
186
+ 135, 11, 13, 10, 114 ]
187
+
188
+ racc_action_check = [
189
+ 87, 113, 105, 116, 72, 23, 71, 0, 50, 50,
190
+ 119, 119, 0, 45, 42, 40, 72, 124, 127, 87,
191
+ 71, 105, 51, 113, 44, 116, 87, 87, 105, 105,
192
+ 0, 71, 51, 0, 53, 53, 51, 53, 53, 124,
193
+ 127, 130, 19, 18, 30, 54, 44, 51, 88, 56,
194
+ 35, 53, 53, 53, 53, 53, 53, 53, 53, 53,
195
+ 35, 30, 88, 130, 35, 89, 89, 32, 59, 115,
196
+ 60, 9, 9, 88, 9, 35, 115, 115, 61, 62,
197
+ 63, 32, 89, 89, 89, 89, 89, 89, 89, 89,
198
+ 89, 9, 114, 39, 111, 70, 47, 16, 117, 114,
199
+ 114, 111, 111, 47, 47, 117, 117, 125, 20, 69,
200
+ 73, 97, 84, 85, 125, 125, 69, 69, 97, 97,
201
+ 85, 85, 102, 37, 14, 12, 11, 90, 91, 102,
202
+ 102, 92, 94, 95, 21, 10, 101, 33, 31, 106,
203
+ 107, 108, 109, 29, 8, 28, 27, 5, 26, 25,
204
+ 122, 3, 24, 1, 100 ]
205
+
206
+ racc_action_pointer = [
207
+ 5, 153, nil, 148, nil, 118, nil, nil, 136, 62,
208
+ 135, 97, 99, nil, 95, nil, 89, nil, 16, 34,
209
+ 79, 130, nil, 1, 123, 136, 119, 117, 116, 135,
210
+ 32, 109, 54, 122, nil, 46, nil, 110, nil, 80,
211
+ -14, nil, 9, nil, 19, -16, nil, 73, nil, nil,
212
+ -7, 18, nil, 19, 28, nil, 20, nil, nil, 48,
213
+ 50, 65, 68, 74, nil, nil, nil, nil, nil, 86,
214
+ 91, 2, -1, 105, nil, nil, nil, nil, nil, nil,
215
+ nil, nil, nil, nil, 96, 90, nil, -4, 44, 50,
216
+ 106, 106, 109, nil, 103, 129, nil, 88, nil, nil,
217
+ 150, 119, 99, nil, nil, -2, 110, 117, 117, 118,
218
+ nil, 71, nil, -4, 69, 46, -2, 75, nil, -31,
219
+ nil, nil, 127, nil, 12, 84, nil, 13, nil, nil,
220
+ 36, nil, nil, nil, nil, nil, nil, nil, nil, nil ]
221
+
222
+ racc_action_default = [
223
+ -68, -68, -1, -68, -2, -68, -3, -4, -68, -68,
224
+ -68, -68, -68, -47, -68, -13, -68, -48, -14, -68,
225
+ -68, -68, 140, -68, -68, -15, -68, -68, -68, -68,
226
+ -68, -68, -15, -68, -43, -68, -46, -15, -49, -15,
227
+ -68, -11, -68, -12, -68, -68, -42, -68, -30, -31,
228
+ -68, -68, -16, -68, -17, -18, -68, -22, -24, -34,
229
+ -34, -15, -9, -68, -44, -51, -45, -50, -52, -68,
230
+ -68, -68, -68, -68, -57, -58, -59, -60, -65, -61,
231
+ -62, -55, -63, -64, -68, -68, -56, -68, -68, -68,
232
+ -68, -38, -38, -7, -68, -68, -20, -68, -25, -19,
233
+ -68, -68, -68, -26, -23, -68, -68, -68, -40, -40,
234
+ -10, -68, -53, -68, -68, -68, -68, -68, -27, -36,
235
+ -39, -8, -68, -6, -68, -68, -21, -68, -32, -28,
236
+ -68, -35, -37, -66, -67, -41, -5, -54, -33, -29 ]
237
+
238
+ racc_goto_table = [
239
+ 12, 87, 55, 19, 17, 66, 23, 34, 18, 25,
240
+ 108, 109, 91, 92, 7, 29, 16, 36, 73, 33,
241
+ 42, 37, 38, 39, 46, 43, 17, 96, 64, 59,
242
+ 44, 60, 121, 123, 52, 61, 54, 105, 6, 4,
243
+ 33, 113, 104, 101, 2, 103, 116, 131, 132, 32,
244
+ 1, 89, nil, 93, nil, 124, nil, nil, 127, nil,
245
+ nil, 130, nil, 118, nil, nil, nil, nil, nil, nil,
246
+ nil, nil, nil, 128, nil, nil, nil, nil, nil, nil,
247
+ nil, nil, nil, 137, nil, nil, nil, nil, nil, 110,
248
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
249
+ nil, 119 ]
250
+
251
+ racc_goto_check = [
252
+ 6, 22, 18, 9, 6, 19, 6, 28, 7, 6,
253
+ 12, 12, 11, 11, 5, 6, 14, 10, 18, 6,
254
+ 15, 6, 6, 6, 10, 6, 6, 19, 28, 10,
255
+ 7, 10, 13, 13, 16, 6, 17, 22, 4, 3,
256
+ 6, 8, 20, 19, 2, 19, 8, 25, 26, 27,
257
+ 1, 6, nil, 10, nil, 8, nil, nil, 8, nil,
258
+ nil, 8, nil, 19, nil, nil, nil, nil, nil, nil,
259
+ nil, nil, nil, 19, nil, nil, nil, nil, nil, nil,
260
+ nil, nil, nil, 19, nil, nil, nil, nil, nil, 6,
261
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
262
+ nil, 6 ]
263
+
264
+ racc_goto_pointer = [
265
+ nil, 50, 44, 39, 38, 14, -5, -1, -56, -6,
266
+ -8, -47, -81, -76, 7, -10, -1, 1, -33, -42,
267
+ -46, nil, -52, nil, nil, -72, -71, 25, -17 ]
268
+
269
+ racc_goto_default = [
270
+ nil, nil, nil, nil, nil, nil, 53, nil, nil, nil,
271
+ nil, nil, nil, nil, nil, nil, nil, 72, nil, 112,
272
+ 57, 58, nil, 48, 49, nil, nil, nil, nil ]
273
+
274
+ racc_token_table = {
275
+ false => 0,
276
+ Object.new => 1,
277
+ :INSERT => 2,
278
+ :INTO => 3,
279
+ "(" => 4,
280
+ ")" => 5,
281
+ :VALUES => 6,
282
+ :SELECT => 7,
283
+ :FROM => 8,
284
+ :DISTINCT => 9,
285
+ :COUNT => 10,
286
+ :AS => 11,
287
+ "*" => 12,
288
+ :WHERE => 13,
289
+ :ID => 14,
290
+ "=" => 15,
291
+ :IN => 16,
292
+ :AND => 17,
293
+ :NOT => 18,
294
+ :BETWEEN => 19,
295
+ :ORDER => 20,
296
+ :BY => 21,
297
+ :LIMIT => 22,
298
+ :NUMBER => 23,
299
+ :OFFSET => 24,
300
+ :UPDATE => 25,
301
+ :SET => 26,
302
+ "," => 27,
303
+ :DELETE => 28,
304
+ :IDENTIFIER => 29,
305
+ :STRING => 30,
306
+ :NULL => 31,
307
+ :REGEXP => 32,
308
+ :MOD => 33,
309
+ :EXISTS => 34,
310
+ "<>" => 35,
311
+ "!=" => 36,
312
+ ">=" => 37,
313
+ "<=" => 38,
314
+ ">" => 39,
315
+ "<" => 40,
316
+ :ASC => 41,
317
+ :DESC => 42 }
318
+
319
+ racc_use_result_var = false
320
+
321
+ racc_nt_base = 43
322
+
323
+ Racc_arg = [
324
+ racc_action_table,
325
+ racc_action_check,
326
+ racc_action_default,
327
+ racc_action_pointer,
328
+ racc_goto_table,
329
+ racc_goto_check,
330
+ racc_goto_default,
331
+ racc_goto_pointer,
332
+ racc_nt_base,
333
+ racc_reduce_table,
334
+ racc_token_table,
335
+ racc_shift_n,
336
+ racc_reduce_n,
337
+ racc_use_result_var ]
338
+
339
+ Racc_token_to_s_table = [
340
+ '$end',
341
+ 'error',
342
+ 'INSERT',
343
+ 'INTO',
344
+ '"("',
345
+ '")"',
346
+ 'VALUES',
347
+ 'SELECT',
348
+ 'FROM',
349
+ 'DISTINCT',
350
+ 'COUNT',
351
+ 'AS',
352
+ '"*"',
353
+ 'WHERE',
354
+ 'ID',
355
+ '"="',
356
+ 'IN',
357
+ 'AND',
358
+ 'NOT',
359
+ 'BETWEEN',
360
+ 'ORDER',
361
+ 'BY',
362
+ 'LIMIT',
363
+ 'NUMBER',
364
+ 'OFFSET',
365
+ 'UPDATE',
366
+ 'SET',
367
+ '","',
368
+ 'DELETE',
369
+ 'IDENTIFIER',
370
+ 'STRING',
371
+ 'NULL',
372
+ 'REGEXP',
373
+ 'MOD',
374
+ 'EXISTS',
375
+ '"<>"',
376
+ '"!="',
377
+ '">="',
378
+ '"<="',
379
+ '">"',
380
+ '"<"',
381
+ 'ASC',
382
+ 'DESC',
383
+ '$start',
384
+ 'sql',
385
+ 'create_statement',
386
+ 'read_statemant',
387
+ 'update_statemant',
388
+ 'delete_statemant',
389
+ 'id',
390
+ 'id_list',
391
+ 'value_list',
392
+ 'select_list',
393
+ 'where_clause',
394
+ 'order_by_clause',
395
+ 'limit_clause',
396
+ 'offset_clause',
397
+ 'count_clause',
398
+ 'count_arg',
399
+ 'id_search_condition',
400
+ 'search_condition',
401
+ 'id_predicate',
402
+ 'value',
403
+ 'boolean_primary',
404
+ 'predicate',
405
+ 'op',
406
+ 'between_predicate',
407
+ 'not_in_predicate',
408
+ 'ordering_spec',
409
+ 'order_spec',
410
+ 'set_clause_list',
411
+ 'set_clause']
412
+
413
+ Racc_debug_parser = false
414
+
415
+ ##### racc system variables end #####
416
+
417
+ # reduce 0 omitted
418
+
419
+ # reduce 1 omitted
420
+
421
+ # reduce 2 omitted
422
+
423
+ # reduce 3 omitted
424
+
425
+ # reduce 4 omitted
426
+
427
+ module_eval <<'.,.,', 'sqlparser.y', 12
428
+ def _reduce_5( val, _values)
429
+ {:command => :insert, :table => val[2], :column_list => val[4], :value_list => val[8]}
430
+ end
431
+ .,.,
432
+
433
+ module_eval <<'.,.,', 'sqlparser.y', 17
434
+ def _reduce_6( val, _values)
435
+ {:command => :select, :table => val[3], :select_list => val[1], :condition => val[4], :order => val[5], :limit => val[6], :offset => val[7]}
436
+ end
437
+ .,.,
438
+
439
+ module_eval <<'.,.,', 'sqlparser.y', 21
440
+ def _reduce_7( val, _values)
441
+ {:command => :select, :table => val[4], :select_list => val[2], :distinct => val[2], :condition => val[5]}
442
+ end
443
+ .,.,
444
+
445
+ module_eval <<'.,.,', 'sqlparser.y', 25
446
+ def _reduce_8( val, _values)
447
+ {:command => :select, :table => val[3], :count => val[1], :condition => val[4], :order => val[5], :limit => val[6], :offset => val[7]}
448
+ end
449
+ .,.,
450
+
451
+ module_eval <<'.,.,', 'sqlparser.y', 30
452
+ def _reduce_9( val, _values)
453
+ "count_all"
454
+ end
455
+ .,.,
456
+
457
+ module_eval <<'.,.,', 'sqlparser.y', 34
458
+ def _reduce_10( val, _values)
459
+ val[5]
460
+ end
461
+ .,.,
462
+
463
+ # reduce 11 omitted
464
+
465
+ # reduce 12 omitted
466
+
467
+ module_eval <<'.,.,', 'sqlparser.y', 42
468
+ def _reduce_13( val, _values)
469
+ []
470
+ end
471
+ .,.,
472
+
473
+ # reduce 14 omitted
474
+
475
+ module_eval <<'.,.,', 'sqlparser.y', 48
476
+ def _reduce_15( val, _values)
477
+ []
478
+ end
479
+ .,.,
480
+
481
+ module_eval <<'.,.,', 'sqlparser.y', 52
482
+ def _reduce_16( val, _values)
483
+ val[1]
484
+ end
485
+ .,.,
486
+
487
+ module_eval <<'.,.,', 'sqlparser.y', 56
488
+ def _reduce_17( val, _values)
489
+ val[1]
490
+ end
491
+ .,.,
492
+
493
+ # reduce 18 omitted
494
+
495
+ module_eval <<'.,.,', 'sqlparser.y', 62
496
+ def _reduce_19( val, _values)
497
+ val[1]
498
+ end
499
+ .,.,
500
+
501
+ module_eval <<'.,.,', 'sqlparser.y', 67
502
+ def _reduce_20( val, _values)
503
+ val[2]
504
+ end
505
+ .,.,
506
+
507
+ module_eval <<'.,.,', 'sqlparser.y', 71
508
+ def _reduce_21( val, _values)
509
+ val[3]
510
+ end
511
+ .,.,
512
+
513
+ module_eval <<'.,.,', 'sqlparser.y', 76
514
+ def _reduce_22( val, _values)
515
+ [val[0]].flatten
516
+ end
517
+ .,.,
518
+
519
+ module_eval <<'.,.,', 'sqlparser.y', 80
520
+ def _reduce_23( val, _values)
521
+ (val[0] << val[2]).flatten
522
+ end
523
+ .,.,
524
+
525
+ # reduce 24 omitted
526
+
527
+ module_eval <<'.,.,', 'sqlparser.y', 86
528
+ def _reduce_25( val, _values)
529
+ val[1]
530
+ end
531
+ .,.,
532
+
533
+ module_eval <<'.,.,', 'sqlparser.y', 91
534
+ def _reduce_26( val, _values)
535
+ {:name => val[0], :op => val[1], :expr => val[2]}
536
+ end
537
+ .,.,
538
+
539
+ module_eval <<'.,.,', 'sqlparser.y', 95
540
+ def _reduce_27( val, _values)
541
+ {:name => val[1], :op => val[2], :expr => val[3], :not => true}
542
+ end
543
+ .,.,
544
+
545
+ module_eval <<'.,.,', 'sqlparser.y', 99
546
+ def _reduce_28( val, _values)
547
+ {:name => val[0], :op => val[1], :expr => val[3]}
548
+ end
549
+ .,.,
550
+
551
+ module_eval <<'.,.,', 'sqlparser.y', 103
552
+ def _reduce_29( val, _values)
553
+ {:name => val[1], :op => val[2], :expr => val[4], :not => true}
554
+ end
555
+ .,.,
556
+
557
+ # reduce 30 omitted
558
+
559
+ # reduce 31 omitted
560
+
561
+ module_eval <<'.,.,', 'sqlparser.y', 110
562
+ def _reduce_32( val, _values)
563
+ {:name => val[0], :op => '$bt', :expr => [val[2], val[4]]}
564
+ end
565
+ .,.,
566
+
567
+ module_eval <<'.,.,', 'sqlparser.y', 115
568
+ def _reduce_33( val, _values)
569
+ {:name => val[0], :op => '$nin', :expr => val[4]}
570
+ end
571
+ .,.,
572
+
573
+ module_eval <<'.,.,', 'sqlparser.y', 120
574
+ def _reduce_34( val, _values)
575
+ nil
576
+ end
577
+ .,.,
578
+
579
+ module_eval <<'.,.,', 'sqlparser.y', 124
580
+ def _reduce_35( val, _values)
581
+ {:name => val[2], :type => val[3]}
582
+ end
583
+ .,.,
584
+
585
+ module_eval <<'.,.,', 'sqlparser.y', 129
586
+ def _reduce_36( val, _values)
587
+ :asc
588
+ end
589
+ .,.,
590
+
591
+ # reduce 37 omitted
592
+
593
+ module_eval <<'.,.,', 'sqlparser.y', 135
594
+ def _reduce_38( val, _values)
595
+ nil
596
+ end
597
+ .,.,
598
+
599
+ module_eval <<'.,.,', 'sqlparser.y', 139
600
+ def _reduce_39( val, _values)
601
+ val[1]
602
+ end
603
+ .,.,
604
+
605
+ module_eval <<'.,.,', 'sqlparser.y', 144
606
+ def _reduce_40( val, _values)
607
+ nil
608
+ end
609
+ .,.,
610
+
611
+ module_eval <<'.,.,', 'sqlparser.y', 148
612
+ def _reduce_41( val, _values)
613
+ val[1]
614
+ end
615
+ .,.,
616
+
617
+ module_eval <<'.,.,', 'sqlparser.y', 153
618
+ def _reduce_42( val, _values)
619
+ {:command => :update, :table => val[1], :set_clause_list => val[3], :condition => val[4]}
620
+ end
621
+ .,.,
622
+
623
+ # reduce 43 omitted
624
+
625
+ module_eval <<'.,.,', 'sqlparser.y', 159
626
+ def _reduce_44( val, _values)
627
+ val[0].merge val[2]
628
+ end
629
+ .,.,
630
+
631
+ module_eval <<'.,.,', 'sqlparser.y', 164
632
+ def _reduce_45( val, _values)
633
+ {val[0] => val[2]}
634
+ end
635
+ .,.,
636
+
637
+ module_eval <<'.,.,', 'sqlparser.y', 169
638
+ def _reduce_46( val, _values)
639
+ {:command => :delete, :table => val[2], :condition => val[3]}
640
+ end
641
+ .,.,
642
+
643
+ # reduce 47 omitted
644
+
645
+ module_eval <<'.,.,', 'sqlparser.y', 176
646
+ def _reduce_48( val, _values)
647
+ [val[0]]
648
+ end
649
+ .,.,
650
+
651
+ module_eval <<'.,.,', 'sqlparser.y', 180
652
+ def _reduce_49( val, _values)
653
+ val[0] << val[2]
654
+ end
655
+ .,.,
656
+
657
+ # reduce 50 omitted
658
+
659
+ # reduce 51 omitted
660
+
661
+ # reduce 52 omitted
662
+
663
+ module_eval <<'.,.,', 'sqlparser.y', 189
664
+ def _reduce_53( val, _values)
665
+ [val[0]]
666
+ end
667
+ .,.,
668
+
669
+ module_eval <<'.,.,', 'sqlparser.y', 193
670
+ def _reduce_54( val, _values)
671
+ val[0] << val[2]
672
+ end
673
+ .,.,
674
+
675
+ module_eval <<'.,.,', 'sqlparser.y', 194
676
+ def _reduce_55( val, _values)
677
+ '$in'
678
+ end
679
+ .,.,
680
+
681
+ module_eval <<'.,.,', 'sqlparser.y', 195
682
+ def _reduce_56( val, _values)
683
+ '$regexp'
684
+ end
685
+ .,.,
686
+
687
+ module_eval <<'.,.,', 'sqlparser.y', 196
688
+ def _reduce_57( val, _values)
689
+ '$mod'
690
+ end
691
+ .,.,
692
+
693
+ module_eval <<'.,.,', 'sqlparser.y', 197
694
+ def _reduce_58( val, _values)
695
+ '$exists'
696
+ end
697
+ .,.,
698
+
699
+ module_eval <<'.,.,', 'sqlparser.y', 198
700
+ def _reduce_59( val, _values)
701
+ '$ne'
702
+ end
703
+ .,.,
704
+
705
+ module_eval <<'.,.,', 'sqlparser.y', 199
706
+ def _reduce_60( val, _values)
707
+ '$ne'
708
+ end
709
+ .,.,
710
+
711
+ module_eval <<'.,.,', 'sqlparser.y', 200
712
+ def _reduce_61( val, _values)
713
+ '$gte'
714
+ end
715
+ .,.,
716
+
717
+ module_eval <<'.,.,', 'sqlparser.y', 201
718
+ def _reduce_62( val, _values)
719
+ '$lte'
720
+ end
721
+ .,.,
722
+
723
+ module_eval <<'.,.,', 'sqlparser.y', 202
724
+ def _reduce_63( val, _values)
725
+ '$gt'
726
+ end
727
+ .,.,
728
+
729
+ module_eval <<'.,.,', 'sqlparser.y', 203
730
+ def _reduce_64( val, _values)
731
+ '$lt'
732
+ end
733
+ .,.,
734
+
735
+ module_eval <<'.,.,', 'sqlparser.y', 204
736
+ def _reduce_65( val, _values)
737
+ '$eq'
738
+ end
739
+ .,.,
740
+
741
+ module_eval <<'.,.,', 'sqlparser.y', 206
742
+ def _reduce_66( val, _values)
743
+ :asc
744
+ end
745
+ .,.,
746
+
747
+ module_eval <<'.,.,', 'sqlparser.y', 207
748
+ def _reduce_67( val, _values)
749
+ :desc
750
+ end
751
+ .,.,
752
+
753
+ def _reduce_none( val, _values)
754
+ val[0]
755
+ end
756
+
757
+ end # class SQLParser
758
+
759
+
760
+ end # module ActiveMongo