sdbcli 1.4.1 → 1.4.2
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 +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
|