activerecord-alt-mongo-adapter 0.1.0

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.
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