sdbcli 1.4.1 → 1.4.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README +8 -4
- data/bin/sdbcli +9 -5
- data/lib/sdbcli/sdb-driver.rb +45 -0
- data/lib/sdbcli/sdb-parser.tab.rb +236 -218
- data/lib/sdbcli/sdb-parser.y +16 -6
- data/lib/sdbcli/sdb-runner.rb +19 -15
- metadata +1 -1
data/README
CHANGED
@@ -76,16 +76,20 @@ https://bitbucket.org/winebarrel/sdbcli
|
|
76
76
|
queries using the SELECT statement
|
77
77
|
see http://docs.aws.amazon.com/AmazonSimpleDB/latest/DeveloperGuide/UsingSelect.html
|
78
78
|
|
79
|
-
|
79
|
+
N[EXT]
|
80
80
|
displays a continuation of a result
|
81
81
|
(NEXT statement is published after SELECT statement)
|
82
82
|
|
83
|
-
|
83
|
+
C[URRENT]
|
84
84
|
displays a present result
|
85
85
|
(CURRENT statement is published after SELECT statement)
|
86
86
|
|
87
|
-
|
88
|
-
displays a result
|
87
|
+
P[REV]
|
88
|
+
displays a previous result
|
89
|
+
(PREV statement is published after SELECT statement)
|
90
|
+
|
91
|
+
PAGE [number]
|
92
|
+
displays a present page number or displays a result of the specified page
|
89
93
|
(PAGE statement is published after SELECT statement)
|
90
94
|
|
91
95
|
DESC domain_name
|
data/bin/sdbcli
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
$LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
|
3
3
|
|
4
|
-
Version = '1.4.
|
4
|
+
Version = '1.4.2'
|
5
5
|
HISTORY_FILE = File.join((ENV['HOME'] || ENV['USERPROFILE'] || '.'), '.sdbcli_history')
|
6
6
|
HISTSIZE = 500
|
7
7
|
SELECT_LIMIT = 2500
|
@@ -390,16 +390,20 @@ SELECT output_list FROM domain_name [WHERE expression] [sort_instructions] [LIMI
|
|
390
390
|
queries using the SELECT statement
|
391
391
|
see http://docs.aws.amazon.com/AmazonSimpleDB/latest/DeveloperGuide/UsingSelect.html
|
392
392
|
|
393
|
-
|
393
|
+
N[EXT]
|
394
394
|
displays a continuation of a result
|
395
395
|
(NEXT statement is published after SELECT statement)
|
396
396
|
|
397
|
-
|
397
|
+
C[URRENT]
|
398
398
|
displays a present result
|
399
399
|
(CURRENT statement is published after SELECT statement)
|
400
400
|
|
401
|
-
|
402
|
-
displays a result
|
401
|
+
P[REV]
|
402
|
+
displays a previous result
|
403
|
+
(PREV statement is published after SELECT statement)
|
404
|
+
|
405
|
+
PAGE [number]
|
406
|
+
displays a present page number or displays a result of the specified page
|
403
407
|
(PAGE statement is published after SELECT statement)
|
404
408
|
|
405
409
|
DESC domain_name
|
data/lib/sdbcli/sdb-driver.rb
CHANGED
@@ -15,6 +15,7 @@ module SimpleDB
|
|
15
15
|
@select_expr = nil
|
16
16
|
@next_token = nil
|
17
17
|
@current_token = nil
|
18
|
+
@current_page = 1
|
18
19
|
end
|
19
20
|
|
20
21
|
def endpoint
|
@@ -124,6 +125,7 @@ module SimpleDB
|
|
124
125
|
@select_expr = expr
|
125
126
|
@current_token = nil
|
126
127
|
@next_token = token
|
128
|
+
@current_page = 1
|
127
129
|
end
|
128
130
|
|
129
131
|
return items
|
@@ -145,6 +147,7 @@ module SimpleDB
|
|
145
147
|
|
146
148
|
@current_token = @next_token
|
147
149
|
@next_token = token
|
150
|
+
@current_page += 1
|
148
151
|
|
149
152
|
return items
|
150
153
|
end
|
@@ -202,10 +205,52 @@ module SimpleDB
|
|
202
205
|
|
203
206
|
@current_token = token
|
204
207
|
@next_token = new_token
|
208
|
+
@current_page = page
|
205
209
|
|
206
210
|
return items
|
207
211
|
end
|
208
212
|
|
213
|
+
def prev_list(consistent = false)
|
214
|
+
unless @select_expr and @current_page > 1
|
215
|
+
return []
|
216
|
+
end
|
217
|
+
|
218
|
+
ss = StringScanner.new(@select_expr.dup)
|
219
|
+
limit = 100
|
220
|
+
|
221
|
+
until ss.eos?
|
222
|
+
if ss.scan(/[^`'"L]+/i) #'
|
223
|
+
elsif ss.scan( /`(?:[^`]|``)*`/)
|
224
|
+
elsif ss.scan(/'(?:[^']|'')*'/) #'
|
225
|
+
elsif ss.scan(/"(?:[^"]|"")*"/) #"
|
226
|
+
elsif (tok = ss.scan /LIMIT\s+\d\b/i)
|
227
|
+
limit = tok.split(/\s+/).last.to_i
|
228
|
+
elsif ss.scan(/./)
|
229
|
+
end
|
230
|
+
end
|
231
|
+
|
232
|
+
params = {:SelectExpression => @select_expr, :ConsistentRead => consistent}
|
233
|
+
items = []
|
234
|
+
|
235
|
+
token = (@current_page > 2) ? SimpleDB::TokenGenerator.next_token(limit, @current_page - 1) : :first
|
236
|
+
|
237
|
+
new_token = iterate(:select, params, token) do |doc|
|
238
|
+
doc.css('Item').map do |i|
|
239
|
+
items << [i.at_css('Name').content, attrs_to_hash(i)]
|
240
|
+
end
|
241
|
+
end
|
242
|
+
|
243
|
+
@current_token = token
|
244
|
+
@next_token = new_token
|
245
|
+
@current_page -= 1
|
246
|
+
|
247
|
+
return items
|
248
|
+
end
|
249
|
+
|
250
|
+
def current_page
|
251
|
+
@current_page
|
252
|
+
end
|
253
|
+
|
209
254
|
def delete(domain_name, items = {})
|
210
255
|
until (chunk = items.slice!(0, MAX_NUMBER_SUBMITTED_ITEMS)).empty?
|
211
256
|
params = {}
|
@@ -13,7 +13,7 @@ module SimpleDB
|
|
13
13
|
|
14
14
|
class Parser < Racc::Parser
|
15
15
|
|
16
|
-
module_eval(<<'...end sdb-parser.y/module_eval...', 'sdb-parser.y',
|
16
|
+
module_eval(<<'...end sdb-parser.y/module_eval...', 'sdb-parser.y', 282)
|
17
17
|
|
18
18
|
KEYWORDS = %w(
|
19
19
|
ADD
|
@@ -88,11 +88,13 @@ def scan
|
|
88
88
|
yield [tok.upcase.to_sym, tok]
|
89
89
|
elsif (tok = @ss.scan /SELECT\b/i)
|
90
90
|
yield [:SELECT, tok + @ss.scan(/.*/)]
|
91
|
-
elsif (tok = @ss.scan /
|
91
|
+
elsif (tok = @ss.scan /N(EXT)?\b/i)
|
92
92
|
yield [:NEXT, @ss.scan(/\s*\|\s*.*/)]
|
93
|
-
elsif (tok = @ss.scan /
|
93
|
+
elsif (tok = @ss.scan /C(URRENT)?\b/i)
|
94
94
|
yield [:CURRENT, @ss.scan(/\s*\|\s*.*/)]
|
95
|
-
elsif (tok = @ss.scan /
|
95
|
+
elsif (tok = @ss.scan /P(REV)?\b/i)
|
96
|
+
yield [:PREV, @ss.scan(/\s*\|\s*.*/)]
|
97
|
+
elsif (tok = @ss.scan /PAGE(\s+\d+)?/i)
|
96
98
|
yield [:PAGE, tok + @ss.scan(/(\s*\|\s*.*)?/)]
|
97
99
|
elsif (tok = @ss.scan /NULL\b/i)
|
98
100
|
yield [:NULL, nil]
|
@@ -137,148 +139,150 @@ end
|
|
137
139
|
##### State transition tables begin ###
|
138
140
|
|
139
141
|
racc_action_table = [
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
142
|
+
17, 10, 75, 72, 18, 71, 37, 70, 73, 73,
|
143
|
+
35, 71, 33, 70, 19, 83, 84, 20, 83, 84,
|
144
|
+
21, 22, 23, 24, 25, 26, 58, 27, 28, 29,
|
145
|
+
44, 45, 30, 31, 32, 83, 84, 83, 84, 103,
|
146
|
+
104, 83, 84, 108, 104, 83, 84, 79, 80, 53,
|
147
|
+
54, 83, 84, 83, 84, 65, 66, 59, 60, 63,
|
148
|
+
63, 56, 67, 51, 55, 74, 57, 76, 77, 78,
|
149
|
+
52, 81, 63, 51, 86, 87, 88, 89, 50, 91,
|
150
|
+
92, 93, 49, 95, 48, 47, 46, 43, 102, 42,
|
151
|
+
105, 37, 39, 38 ]
|
150
152
|
|
151
153
|
racc_action_check = [
|
152
|
-
0, 0,
|
153
|
-
|
154
|
-
0, 0, 0, 0, 0,
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
20, 19
|
154
|
+
0, 0, 64, 61, 0, 60, 18, 60, 64, 61,
|
155
|
+
18, 80, 1, 80, 0, 91, 91, 0, 95, 95,
|
156
|
+
0, 0, 0, 0, 0, 0, 50, 0, 0, 0,
|
157
|
+
29, 29, 0, 0, 0, 93, 93, 92, 92, 100,
|
158
|
+
100, 88, 88, 107, 107, 74, 74, 68, 68, 39,
|
159
|
+
39, 104, 104, 105, 105, 55, 55, 51, 52, 53,
|
160
|
+
54, 42, 58, 41, 40, 63, 43, 65, 66, 67,
|
161
|
+
38, 72, 73, 36, 75, 76, 78, 79, 34, 81,
|
162
|
+
86, 87, 33, 89, 32, 31, 30, 28, 96, 26,
|
163
|
+
102, 21, 20, 19 ]
|
162
164
|
|
163
165
|
racc_action_pointer = [
|
164
166
|
-1, 12, nil, nil, nil, nil, nil, nil, nil, nil,
|
165
|
-
nil, nil, nil, nil, nil, nil, nil, -1,
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
nil,
|
171
|
-
|
172
|
-
nil, nil, nil, nil,
|
173
|
-
|
174
|
-
|
167
|
+
nil, nil, nil, nil, nil, nil, nil, nil, -1, 77,
|
168
|
+
85, 84, nil, nil, nil, nil, 62, nil, 60, -1,
|
169
|
+
79, 78, 77, 82, 72, nil, 59, nil, 63, 30,
|
170
|
+
58, 49, 54, 59, nil, nil, nil, nil, nil, nil,
|
171
|
+
19, 50, 46, 52, 53, 48, nil, nil, 54, nil,
|
172
|
+
-2, -5, nil, 55, -6, 59, 59, 60, 34, nil,
|
173
|
+
nil, nil, 62, 65, 42, 65, 66, nil, 66, 60,
|
174
|
+
4, 69, nil, nil, nil, nil, 70, 71, 38, 71,
|
175
|
+
nil, 12, 34, 32, nil, 15, 74, nil, nil, nil,
|
176
|
+
26, nil, 78, nil, 48, 50, nil, 30, nil ]
|
175
177
|
|
176
178
|
racc_action_default = [
|
177
|
-
-
|
178
|
-
-9, -10, -11, -12, -13, -14, -15, -
|
179
|
-
-
|
180
|
-
-
|
181
|
-
-
|
182
|
-
-
|
183
|
-
-
|
184
|
-
-
|
185
|
-
-
|
186
|
-
-
|
187
|
-
-61, -
|
179
|
+
-63, -63, -1, -2, -3, -4, -5, -6, -7, -8,
|
180
|
+
-9, -10, -11, -12, -13, -14, -15, -16, -20, -63,
|
181
|
+
-63, -45, -47, -48, -49, -50, -63, -52, -63, -63,
|
182
|
+
-63, -63, -63, -63, -63, -21, -22, -59, -63, -63,
|
183
|
+
-63, -46, -63, -63, -54, -55, -56, -57, -58, 109,
|
184
|
+
-63, -63, -63, -63, -63, -63, -51, -53, -63, -60,
|
185
|
+
-63, -31, -38, -63, -35, -42, -43, -63, -63, -26,
|
186
|
+
-28, -29, -32, -63, -63, -36, -63, -44, -63, -63,
|
187
|
+
-63, -33, -39, -17, -18, -40, -37, -63, -63, -63,
|
188
|
+
-27, -63, -63, -63, -19, -63, -25, -30, -34, -41,
|
189
|
+
-63, -61, -63, -23, -63, -63, -62, -63, -24 ]
|
188
190
|
|
189
191
|
racc_goto_table = [
|
190
|
-
|
191
|
-
|
192
|
-
15,
|
193
|
-
|
192
|
+
85, 69, 100, 36, 61, 64, 41, 14, 7, 8,
|
193
|
+
9, 11, 107, 12, 94, 13, 6, 97, 98, 99,
|
194
|
+
15, 90, 16, 1, 34, 5, 96, 4, 68, 3,
|
195
|
+
106, 2, 82, 40 ]
|
194
196
|
|
195
197
|
racc_goto_check = [
|
196
|
-
|
197
|
-
9, 10,
|
198
|
-
14,
|
199
|
-
|
198
|
+
16, 22, 20, 18, 23, 23, 18, 13, 7, 8,
|
199
|
+
9, 10, 20, 11, 16, 12, 6, 16, 16, 16,
|
200
|
+
14, 22, 15, 1, 17, 5, 19, 4, 21, 3,
|
201
|
+
16, 2, 24, 25 ]
|
200
202
|
|
201
203
|
racc_goto_pointer = [
|
202
|
-
nil,
|
203
|
-
11, 13, 15, 7, 20, -
|
204
|
-
-
|
204
|
+
nil, 23, 31, 29, 27, 25, 16, 8, 9, 10,
|
205
|
+
11, 13, 15, 7, 20, 22, -74, 6, -15, -63,
|
206
|
+
-93, -32, -59, -49, -41, 12 ]
|
205
207
|
|
206
208
|
racc_goto_default = [
|
207
209
|
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
208
|
-
nil, nil, nil, nil, nil,
|
209
|
-
nil, nil, nil,
|
210
|
+
nil, nil, nil, nil, nil, nil, 101, nil, nil, nil,
|
211
|
+
nil, nil, nil, nil, 62, nil ]
|
210
212
|
|
211
213
|
racc_reduce_table = [
|
212
214
|
0, 0, :racc_error,
|
213
|
-
1,
|
214
|
-
1,
|
215
|
-
1,
|
216
|
-
1,
|
217
|
-
1,
|
218
|
-
1,
|
219
|
-
1,
|
220
|
-
1,
|
221
|
-
1,
|
222
|
-
1,
|
223
|
-
1,
|
224
|
-
1,
|
225
|
-
1,
|
226
|
-
1,
|
227
|
-
1,
|
228
|
-
1,
|
229
|
-
1,
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
1,
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
1,
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
3,
|
252
|
-
|
253
|
-
|
254
|
-
4,
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
1,
|
215
|
+
1, 37, :_reduce_none,
|
216
|
+
1, 37, :_reduce_none,
|
217
|
+
1, 37, :_reduce_none,
|
218
|
+
1, 37, :_reduce_none,
|
219
|
+
1, 37, :_reduce_none,
|
220
|
+
1, 37, :_reduce_none,
|
221
|
+
1, 37, :_reduce_none,
|
222
|
+
1, 37, :_reduce_none,
|
223
|
+
1, 37, :_reduce_none,
|
224
|
+
1, 37, :_reduce_none,
|
225
|
+
1, 37, :_reduce_none,
|
226
|
+
1, 37, :_reduce_none,
|
227
|
+
1, 37, :_reduce_none,
|
228
|
+
1, 37, :_reduce_none,
|
229
|
+
1, 37, :_reduce_none,
|
230
|
+
1, 37, :_reduce_16,
|
231
|
+
1, 52, :_reduce_none,
|
232
|
+
1, 52, :_reduce_none,
|
233
|
+
8, 38, :_reduce_19,
|
234
|
+
0, 53, :_reduce_20,
|
235
|
+
1, 53, :_reduce_21,
|
236
|
+
1, 53, :_reduce_none,
|
237
|
+
3, 55, :_reduce_23,
|
238
|
+
5, 55, :_reduce_24,
|
239
|
+
8, 39, :_reduce_25,
|
240
|
+
1, 57, :_reduce_26,
|
241
|
+
3, 57, :_reduce_27,
|
242
|
+
1, 58, :_reduce_none,
|
243
|
+
1, 58, :_reduce_none,
|
244
|
+
8, 40, :_reduce_30,
|
245
|
+
4, 40, :_reduce_31,
|
246
|
+
5, 40, :_reduce_32,
|
247
|
+
6, 40, :_reduce_33,
|
248
|
+
8, 41, :_reduce_34,
|
249
|
+
4, 41, :_reduce_35,
|
250
|
+
5, 41, :_reduce_36,
|
251
|
+
6, 41, :_reduce_37,
|
252
|
+
1, 59, :_reduce_38,
|
253
|
+
3, 59, :_reduce_39,
|
254
|
+
3, 60, :_reduce_40,
|
255
|
+
8, 42, :_reduce_41,
|
256
|
+
4, 42, :_reduce_42,
|
257
|
+
4, 42, :_reduce_43,
|
258
|
+
5, 42, :_reduce_44,
|
259
|
+
0, 61, :_reduce_45,
|
260
|
+
1, 61, :_reduce_none,
|
259
261
|
1, 43, :_reduce_47,
|
260
|
-
1,
|
261
|
-
|
262
|
+
1, 44, :_reduce_48,
|
263
|
+
1, 45, :_reduce_49,
|
262
264
|
1, 44, :_reduce_50,
|
263
|
-
3,
|
264
|
-
|
265
|
-
|
266
|
-
2,
|
265
|
+
3, 47, :_reduce_51,
|
266
|
+
1, 46, :_reduce_52,
|
267
|
+
3, 48, :_reduce_53,
|
268
|
+
2, 49, :_reduce_54,
|
267
269
|
2, 49, :_reduce_55,
|
268
|
-
2,
|
269
|
-
|
270
|
-
|
270
|
+
2, 50, :_reduce_56,
|
271
|
+
2, 51, :_reduce_57,
|
272
|
+
2, 51, :_reduce_58,
|
271
273
|
1, 54, :_reduce_59,
|
272
|
-
3, 54, :_reduce_60
|
274
|
+
3, 54, :_reduce_60,
|
275
|
+
1, 56, :_reduce_61,
|
276
|
+
3, 56, :_reduce_62 ]
|
273
277
|
|
274
|
-
racc_reduce_n =
|
278
|
+
racc_reduce_n = 63
|
275
279
|
|
276
|
-
racc_shift_n =
|
280
|
+
racc_shift_n = 109
|
277
281
|
|
278
282
|
racc_token_table = {
|
279
283
|
false => 0,
|
280
284
|
:error => 1,
|
281
|
-
:
|
285
|
+
:prev_stmt => 2,
|
282
286
|
:STRING => 3,
|
283
287
|
:NUMBER => 4,
|
284
288
|
:GET => 5,
|
@@ -301,18 +305,19 @@ racc_token_table = {
|
|
301
305
|
:SELECT => 22,
|
302
306
|
:NEXT => 23,
|
303
307
|
:CURRENT => 24,
|
304
|
-
:
|
305
|
-
:
|
306
|
-
:
|
307
|
-
:
|
308
|
-
:
|
309
|
-
:
|
310
|
-
:
|
311
|
-
:
|
312
|
-
:
|
313
|
-
:
|
314
|
-
|
315
|
-
|
308
|
+
:PREV => 25,
|
309
|
+
:CREATE => 26,
|
310
|
+
:DOMAIN => 27,
|
311
|
+
:PAGE => 28,
|
312
|
+
:DROP => 29,
|
313
|
+
:SHOW => 30,
|
314
|
+
:DOMAINS => 31,
|
315
|
+
:REGIONS => 32,
|
316
|
+
:USE => 33,
|
317
|
+
:DESC => 34,
|
318
|
+
:DESCRIBE => 35 }
|
319
|
+
|
320
|
+
racc_nt_base = 36
|
316
321
|
|
317
322
|
racc_use_result_var = false
|
318
323
|
|
@@ -335,7 +340,7 @@ Racc_arg = [
|
|
335
340
|
Racc_token_to_s_table = [
|
336
341
|
"$end",
|
337
342
|
"error",
|
338
|
-
"
|
343
|
+
"prev_stmt",
|
339
344
|
"STRING",
|
340
345
|
"NUMBER",
|
341
346
|
"GET",
|
@@ -358,6 +363,7 @@ Racc_token_to_s_table = [
|
|
358
363
|
"SELECT",
|
359
364
|
"NEXT",
|
360
365
|
"CURRENT",
|
366
|
+
"PREV",
|
361
367
|
"CREATE",
|
362
368
|
"DOMAIN",
|
363
369
|
"PAGE",
|
@@ -377,6 +383,7 @@ Racc_token_to_s_table = [
|
|
377
383
|
"delete_stmt",
|
378
384
|
"select_stmt",
|
379
385
|
"next_stmt",
|
386
|
+
"current_stmt",
|
380
387
|
"page_stmt",
|
381
388
|
"create_stmt",
|
382
389
|
"drop_stmt",
|
@@ -428,56 +435,58 @@ Racc_debug_parser = false
|
|
428
435
|
|
429
436
|
# reduce 14 omitted
|
430
437
|
|
431
|
-
|
432
|
-
|
438
|
+
# reduce 15 omitted
|
439
|
+
|
440
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 20)
|
441
|
+
def _reduce_16(val, _values)
|
433
442
|
@stmt_with_expr
|
434
443
|
|
435
444
|
end
|
436
445
|
.,.,
|
437
446
|
|
438
|
-
# reduce 16 omitted
|
439
|
-
|
440
447
|
# reduce 17 omitted
|
441
448
|
|
442
|
-
|
443
|
-
|
449
|
+
# reduce 18 omitted
|
450
|
+
|
451
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 28)
|
452
|
+
def _reduce_19(val, _values)
|
444
453
|
struct(:GET, :domain => val[3], :item_name => val[7], :attr_names => val[1])
|
445
454
|
|
446
455
|
end
|
447
456
|
.,.,
|
448
457
|
|
449
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
450
|
-
def
|
458
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 33)
|
459
|
+
def _reduce_20(val, _values)
|
451
460
|
[]
|
452
461
|
|
453
462
|
end
|
454
463
|
.,.,
|
455
464
|
|
456
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
457
|
-
def
|
465
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 37)
|
466
|
+
def _reduce_21(val, _values)
|
458
467
|
[]
|
459
468
|
|
460
469
|
end
|
461
470
|
.,.,
|
462
471
|
|
463
|
-
# reduce
|
472
|
+
# reduce 22 omitted
|
464
473
|
|
465
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
466
|
-
def
|
474
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 43)
|
475
|
+
def _reduce_23(val, _values)
|
467
476
|
[val[1]]
|
468
477
|
|
469
478
|
end
|
470
479
|
.,.,
|
471
480
|
|
472
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
473
|
-
def
|
481
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 47)
|
482
|
+
def _reduce_24(val, _values)
|
474
483
|
val[0] + [val[3]]
|
475
484
|
|
476
485
|
end
|
477
486
|
.,.,
|
478
487
|
|
479
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
480
|
-
def
|
488
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 52)
|
489
|
+
def _reduce_25(val, _values)
|
481
490
|
items = val[7].map do |vals|
|
482
491
|
unless val[4].length == vals.length
|
483
492
|
raise Racc::ParseError, 'The number of an attribute and values differs'
|
@@ -502,26 +511,26 @@ module_eval(<<'.,.,', 'sdb-parser.y', 51)
|
|
502
511
|
end
|
503
512
|
.,.,
|
504
513
|
|
505
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
506
|
-
def
|
514
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 76)
|
515
|
+
def _reduce_26(val, _values)
|
507
516
|
[val[0]]
|
508
517
|
|
509
518
|
end
|
510
519
|
.,.,
|
511
520
|
|
512
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
513
|
-
def
|
521
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 80)
|
522
|
+
def _reduce_27(val, _values)
|
514
523
|
val[0] + [val[2]]
|
515
524
|
|
516
525
|
end
|
517
526
|
.,.,
|
518
527
|
|
519
|
-
# reduce 27 omitted
|
520
|
-
|
521
528
|
# reduce 28 omitted
|
522
529
|
|
523
|
-
|
524
|
-
|
530
|
+
# reduce 29 omitted
|
531
|
+
|
532
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 88)
|
533
|
+
def _reduce_30(val, _values)
|
525
534
|
attrs = {}
|
526
535
|
val[3].each {|k, v| attrs[k] = v }
|
527
536
|
struct(:UPDATE, :domain => val[1], :items => [[val[7], attrs]])
|
@@ -529,8 +538,8 @@ module_eval(<<'.,.,', 'sdb-parser.y', 87)
|
|
529
538
|
end
|
530
539
|
.,.,
|
531
540
|
|
532
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
533
|
-
def
|
541
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 94)
|
542
|
+
def _reduce_31(val, _values)
|
534
543
|
attrs = {}
|
535
544
|
val[3].each {|k, v| attrs[k] = v }
|
536
545
|
@stmt_with_expr = struct(:UPDATE_WITH_EXPR, :domain => val[1], :attrs => attrs, :expr => '')
|
@@ -538,8 +547,8 @@ module_eval(<<'.,.,', 'sdb-parser.y', 93)
|
|
538
547
|
end
|
539
548
|
.,.,
|
540
549
|
|
541
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
542
|
-
def
|
550
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 100)
|
551
|
+
def _reduce_32(val, _values)
|
543
552
|
attrs = {}
|
544
553
|
val[3].each {|k, v| attrs[k] = v }
|
545
554
|
@stmt_with_expr = struct(:UPDATE_WITH_EXPR, :domain => val[1], :attrs => attrs, :expr => 'WHERE ')
|
@@ -547,8 +556,8 @@ module_eval(<<'.,.,', 'sdb-parser.y', 99)
|
|
547
556
|
end
|
548
557
|
.,.,
|
549
558
|
|
550
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
551
|
-
def
|
559
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 106)
|
560
|
+
def _reduce_33(val, _values)
|
552
561
|
attrs = {}
|
553
562
|
val[3].each {|k, v| attrs[k] = v }
|
554
563
|
@stmt_with_expr = struct(:UPDATE_WITH_EXPR, :domain => val[1], :attrs => attrs, :expr => 'WHERE itemName')
|
@@ -556,8 +565,8 @@ module_eval(<<'.,.,', 'sdb-parser.y', 105)
|
|
556
565
|
end
|
557
566
|
.,.,
|
558
567
|
|
559
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
560
|
-
def
|
568
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 113)
|
569
|
+
def _reduce_34(val, _values)
|
561
570
|
attrs = {}
|
562
571
|
val[3].each {|k, v| attrs[k] = v }
|
563
572
|
struct(:MERGE, :domain => val[1], :items => [[val[7], attrs]])
|
@@ -565,8 +574,8 @@ module_eval(<<'.,.,', 'sdb-parser.y', 112)
|
|
565
574
|
end
|
566
575
|
.,.,
|
567
576
|
|
568
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
569
|
-
def
|
577
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 119)
|
578
|
+
def _reduce_35(val, _values)
|
570
579
|
attrs = {}
|
571
580
|
val[3].each {|k, v| attrs[k] = v }
|
572
581
|
@stmt_with_expr = struct(:MERGE_WITH_EXPR, :domain => val[1], :attrs => attrs, :expr => '')
|
@@ -574,8 +583,8 @@ module_eval(<<'.,.,', 'sdb-parser.y', 118)
|
|
574
583
|
end
|
575
584
|
.,.,
|
576
585
|
|
577
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
578
|
-
def
|
586
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 125)
|
587
|
+
def _reduce_36(val, _values)
|
579
588
|
attrs = {}
|
580
589
|
val[3].each {|k, v| attrs[k] = v }
|
581
590
|
@stmt_with_expr = struct(:MERGE_WITH_EXPR, :domain => val[1], :attrs => attrs, :expr => 'WHERE ')
|
@@ -583,8 +592,8 @@ module_eval(<<'.,.,', 'sdb-parser.y', 124)
|
|
583
592
|
end
|
584
593
|
.,.,
|
585
594
|
|
586
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
587
|
-
def
|
595
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 131)
|
596
|
+
def _reduce_37(val, _values)
|
588
597
|
attrs = {}
|
589
598
|
val[3].each {|k, v| attrs[k] = v }
|
590
599
|
@stmt_with_expr = struct(:MERGE_WITH_EXPR, :domain => val[1], :attrs => attrs, :expr => 'WHERE itemName')
|
@@ -592,66 +601,66 @@ module_eval(<<'.,.,', 'sdb-parser.y', 130)
|
|
592
601
|
end
|
593
602
|
.,.,
|
594
603
|
|
595
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
596
|
-
def
|
604
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 138)
|
605
|
+
def _reduce_38(val, _values)
|
597
606
|
[val[0]]
|
598
607
|
|
599
608
|
end
|
600
609
|
.,.,
|
601
610
|
|
602
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
603
|
-
def
|
611
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 142)
|
612
|
+
def _reduce_39(val, _values)
|
604
613
|
val[0] + [val[2]]
|
605
614
|
|
606
615
|
end
|
607
616
|
.,.,
|
608
617
|
|
609
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
610
|
-
def
|
618
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 147)
|
619
|
+
def _reduce_40(val, _values)
|
611
620
|
[val[0], val[2]]
|
612
621
|
|
613
622
|
end
|
614
623
|
.,.,
|
615
624
|
|
616
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
617
|
-
def
|
625
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 152)
|
626
|
+
def _reduce_41(val, _values)
|
618
627
|
struct(:DELETE, :domain => val[3], :items => [[val[7], val[1]]])
|
619
628
|
|
620
629
|
end
|
621
630
|
.,.,
|
622
631
|
|
623
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
624
|
-
def
|
632
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 156)
|
633
|
+
def _reduce_42(val, _values)
|
625
634
|
@stmt_with_expr = struct(:DELETE_WITH_EXPR, :domain => val[3], :attrs => val[1], :expr => '')
|
626
635
|
|
627
636
|
end
|
628
637
|
.,.,
|
629
638
|
|
630
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
631
|
-
def
|
639
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 160)
|
640
|
+
def _reduce_43(val, _values)
|
632
641
|
@stmt_with_expr = struct(:DELETE_WITH_EXPR, :domain => val[3], :attrs => val[1], :expr => 'WHERE ')
|
633
642
|
|
634
643
|
end
|
635
644
|
.,.,
|
636
645
|
|
637
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
638
|
-
def
|
646
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 164)
|
647
|
+
def _reduce_44(val, _values)
|
639
648
|
@stmt_with_expr = struct(:DELETE_WITH_EXPR, :domain => val[3], :attrs => val[1], :expr => 'WHERE itemName')
|
640
649
|
|
641
650
|
end
|
642
651
|
.,.,
|
643
652
|
|
644
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
645
|
-
def
|
653
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 169)
|
654
|
+
def _reduce_45(val, _values)
|
646
655
|
[]
|
647
656
|
|
648
657
|
end
|
649
658
|
.,.,
|
650
659
|
|
651
|
-
# reduce
|
660
|
+
# reduce 46 omitted
|
652
661
|
|
653
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
654
|
-
def
|
662
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 175)
|
663
|
+
def _reduce_47(val, _values)
|
655
664
|
query = ''
|
656
665
|
ruby = nil
|
657
666
|
|
@@ -678,103 +687,112 @@ module_eval(<<'.,.,', 'sdb-parser.y', 174)
|
|
678
687
|
end
|
679
688
|
.,.,
|
680
689
|
|
681
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
682
|
-
def
|
690
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 201)
|
691
|
+
def _reduce_48(val, _values)
|
683
692
|
ruby = val[0].sub(/\A\s*\|\s*/, '') if val[0]
|
684
693
|
struct(:NEXT, :ruby => ruby)
|
685
694
|
|
686
695
|
end
|
687
696
|
.,.,
|
688
697
|
|
689
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
690
|
-
def
|
698
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 207)
|
699
|
+
def _reduce_49(val, _values)
|
700
|
+
ruby = val[0].sub(/\A\s*\|\s*/, '') if val[0]
|
701
|
+
struct(:CURRENT, :ruby => ruby)
|
702
|
+
|
703
|
+
end
|
704
|
+
.,.,
|
705
|
+
|
706
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 213)
|
707
|
+
def _reduce_50(val, _values)
|
691
708
|
ruby = val[0].sub(/\A\s*\|\s*/, '') if val[0]
|
692
|
-
struct(:
|
709
|
+
struct(:PREV, :ruby => ruby)
|
693
710
|
|
694
711
|
end
|
695
712
|
.,.,
|
696
713
|
|
697
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
698
|
-
def
|
714
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 219)
|
715
|
+
def _reduce_51(val, _values)
|
699
716
|
struct(:CREATE, :domain => val[2])
|
700
717
|
|
701
718
|
end
|
702
719
|
.,.,
|
703
720
|
|
704
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
705
|
-
def
|
721
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 224)
|
722
|
+
def _reduce_52(val, _values)
|
706
723
|
page, ruby = val[0].split(/\s*\|\s*/, 2)
|
707
|
-
page = page.split(/\s+/, 2)
|
724
|
+
page = page.split(/\s+/, 2)[1]
|
725
|
+
page = page.strip.to_i if page
|
708
726
|
struct(:PAGE, :page => page, :ruby => ruby)
|
709
727
|
|
710
728
|
end
|
711
729
|
.,.,
|
712
730
|
|
713
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
714
|
-
def
|
731
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 232)
|
732
|
+
def _reduce_53(val, _values)
|
715
733
|
struct(:DROP, :domain => val[2])
|
716
734
|
|
717
735
|
end
|
718
736
|
.,.,
|
719
737
|
|
720
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
721
|
-
def
|
738
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 237)
|
739
|
+
def _reduce_54(val, _values)
|
722
740
|
struct(:SHOW, :operand => :domains)
|
723
741
|
|
724
742
|
end
|
725
743
|
.,.,
|
726
744
|
|
727
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
728
|
-
def
|
745
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 241)
|
746
|
+
def _reduce_55(val, _values)
|
729
747
|
struct(:SHOW, :operand => :regions)
|
730
748
|
|
731
749
|
end
|
732
750
|
.,.,
|
733
751
|
|
734
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
735
|
-
def
|
752
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 245)
|
753
|
+
def _reduce_56(val, _values)
|
736
754
|
struct(:USE, :endpoint => val[1])
|
737
755
|
|
738
756
|
end
|
739
757
|
.,.,
|
740
758
|
|
741
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
742
|
-
def
|
759
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 249)
|
760
|
+
def _reduce_57(val, _values)
|
743
761
|
struct(:DESCRIBE, :domain => val[1])
|
744
762
|
|
745
763
|
end
|
746
764
|
.,.,
|
747
765
|
|
748
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
749
|
-
def
|
766
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 253)
|
767
|
+
def _reduce_58(val, _values)
|
750
768
|
struct(:DESCRIBE, :domain => val[1])
|
751
769
|
|
752
770
|
end
|
753
771
|
.,.,
|
754
772
|
|
755
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
756
|
-
def
|
773
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 258)
|
774
|
+
def _reduce_59(val, _values)
|
757
775
|
[val[0]]
|
758
776
|
|
759
777
|
end
|
760
778
|
.,.,
|
761
779
|
|
762
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
763
|
-
def
|
780
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 262)
|
781
|
+
def _reduce_60(val, _values)
|
764
782
|
val[0] + [val[2]]
|
765
783
|
|
766
784
|
end
|
767
785
|
.,.,
|
768
786
|
|
769
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
770
|
-
def
|
787
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 267)
|
788
|
+
def _reduce_61(val, _values)
|
771
789
|
[val[0]]
|
772
790
|
|
773
791
|
end
|
774
792
|
.,.,
|
775
793
|
|
776
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
777
|
-
def
|
794
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 271)
|
795
|
+
def _reduce_62(val, _values)
|
778
796
|
[val[0], val[2]].flatten
|
779
797
|
|
780
798
|
end
|
data/lib/sdbcli/sdb-parser.y
CHANGED
@@ -9,6 +9,7 @@ rule
|
|
9
9
|
| select_stmt
|
10
10
|
| next_stmt
|
11
11
|
| current_stmt
|
12
|
+
| prev_stmt
|
12
13
|
| page_stmt
|
13
14
|
| create_stmt
|
14
15
|
| drop_stmt
|
@@ -202,10 +203,16 @@ rule
|
|
202
203
|
struct(:NEXT, :ruby => ruby)
|
203
204
|
}
|
204
205
|
|
205
|
-
|
206
|
+
current_stmt : CURRENT
|
207
|
+
{
|
208
|
+
ruby = val[0].sub(/\A\s*\|\s*/, '') if val[0]
|
209
|
+
struct(:CURRENT, :ruby => ruby)
|
210
|
+
}
|
211
|
+
|
212
|
+
next_stmt : PREV
|
206
213
|
{
|
207
214
|
ruby = val[0].sub(/\A\s*\|\s*/, '') if val[0]
|
208
|
-
struct(:
|
215
|
+
struct(:PREV, :ruby => ruby)
|
209
216
|
}
|
210
217
|
|
211
218
|
create_stmt : CREATE DOMAIN IDENTIFIER
|
@@ -216,7 +223,8 @@ rule
|
|
216
223
|
page_stmt : PAGE
|
217
224
|
{
|
218
225
|
page, ruby = val[0].split(/\s*\|\s*/, 2)
|
219
|
-
page = page.split(/\s+/, 2)
|
226
|
+
page = page.split(/\s+/, 2)[1]
|
227
|
+
page = page.strip.to_i if page
|
220
228
|
struct(:PAGE, :page => page, :ruby => ruby)
|
221
229
|
}
|
222
230
|
|
@@ -345,11 +353,13 @@ def scan
|
|
345
353
|
yield [tok.upcase.to_sym, tok]
|
346
354
|
elsif (tok = @ss.scan /SELECT\b/i)
|
347
355
|
yield [:SELECT, tok + @ss.scan(/.*/)]
|
348
|
-
elsif (tok = @ss.scan /
|
356
|
+
elsif (tok = @ss.scan /N(EXT)?\b/i)
|
349
357
|
yield [:NEXT, @ss.scan(/\s*\|\s*.*/)]
|
350
|
-
elsif (tok = @ss.scan /
|
358
|
+
elsif (tok = @ss.scan /C(URRENT)?\b/i)
|
351
359
|
yield [:CURRENT, @ss.scan(/\s*\|\s*.*/)]
|
352
|
-
elsif (tok = @ss.scan /
|
360
|
+
elsif (tok = @ss.scan /P(REV)?\b/i)
|
361
|
+
yield [:PREV, @ss.scan(/\s*\|\s*.*/)]
|
362
|
+
elsif (tok = @ss.scan /PAGE(\s+\d+)?/i)
|
353
363
|
yield [:PAGE, tok + @ss.scan(/(\s*\|\s*.*)?/)]
|
354
364
|
elsif (tok = @ss.scan /NULL\b/i)
|
355
365
|
yield [:NULL, nil]
|
data/lib/sdbcli/sdb-runner.rb
CHANGED
@@ -132,7 +132,7 @@ module SimpleDB
|
|
132
132
|
rownum = items.length
|
133
133
|
@driver.delete(parsed.domain, items)
|
134
134
|
Rownum.new(rownum)
|
135
|
-
when :SELECT, :NEXT, :CURRENT, :PAGE
|
135
|
+
when :SELECT, :NEXT, :CURRENT, :PREV, :PAGE
|
136
136
|
items = case command
|
137
137
|
when :SELECT
|
138
138
|
@driver.select(parsed.query, consistent, true)
|
@@ -140,28 +140,32 @@ module SimpleDB
|
|
140
140
|
@driver.next_list(consistent)
|
141
141
|
when :CURRENT
|
142
142
|
@driver.current_list(consistent)
|
143
|
+
when :PREV
|
144
|
+
@driver.prev_list(consistent)
|
143
145
|
when :PAGE
|
144
|
-
@driver.page_to(parsed.page, consistent)
|
146
|
+
parsed.page ? @driver.page_to(parsed.page, consistent) : @driver.current_page
|
145
147
|
else
|
146
148
|
raise 'must not happen'
|
147
149
|
end
|
148
150
|
|
149
|
-
|
150
|
-
|
151
|
-
when /itemName/i
|
152
|
-
self.map {|i| i[0] }
|
153
|
-
else
|
154
|
-
self.map {|i| i[1][method_name.to_s] }
|
155
|
-
end
|
156
|
-
end
|
157
|
-
|
158
|
-
items.each do |item|
|
159
|
-
def item.method_missing(method_name)
|
151
|
+
unless items.kind_of?(Integer)
|
152
|
+
def items.method_missing(method_name)
|
160
153
|
case method_name.to_s
|
161
154
|
when /itemName/i
|
162
|
-
self[0]
|
155
|
+
self.map {|i| i[0] }
|
163
156
|
else
|
164
|
-
self[1][method_name.to_s]
|
157
|
+
self.map {|i| i[1][method_name.to_s] }
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
items.each do |item|
|
162
|
+
def item.method_missing(method_name)
|
163
|
+
case method_name.to_s
|
164
|
+
when /itemName/i
|
165
|
+
self[0]
|
166
|
+
else
|
167
|
+
self[1][method_name.to_s]
|
168
|
+
end
|
165
169
|
end
|
166
170
|
end
|
167
171
|
end
|