sdbcli 1.3.5 → 1.3.6

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 CHANGED
@@ -80,6 +80,10 @@ https://bitbucket.org/winebarrel/sdbcli
80
80
  displays a continuation of a result
81
81
  (NEXT statement is published after SELECT statement)
82
82
 
83
+ CUR[RENT]
84
+ displays a present result
85
+ (CURRENT statement is published after SELECT statement)
86
+
83
87
  DESC domain_name
84
88
  displays information about the domain
85
89
 
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.3.5'
4
+ Version = '1.3.6'
5
5
  HISTORY_FILE = File.join((ENV['HOME'] || ENV['USERPROFILE'] || '.'), '.sdbcli_history')
6
6
  HISTSIZE = 500
7
7
  SELECT_LIMIT = 2500
@@ -394,6 +394,10 @@ NEXT
394
394
  displays a continuation of a result
395
395
  (NEXT statement is published after SELECT statement)
396
396
 
397
+ CUR[RENT]
398
+ displays a present result
399
+ (CURRENT statement is published after SELECT statement)
400
+
397
401
  DESC domain_name
398
402
  displays information about the domain
399
403
 
@@ -12,6 +12,7 @@ module SimpleDB
12
12
  @client = Client.new(accessKeyId, secretAccessKey, endpoint)
13
13
  @select_expr = nil
14
14
  @next_token = nil
15
+ @current_token = nil
15
16
  end
16
17
 
17
18
  def endpoint
@@ -119,6 +120,7 @@ module SimpleDB
119
120
 
120
121
  if persist
121
122
  @select_expr = expr
123
+ @current_token = nil
122
124
  @next_token = token
123
125
  end
124
126
 
@@ -133,7 +135,27 @@ module SimpleDB
133
135
  params = {:SelectExpression => @select_expr, :ConsistentRead => consistent}
134
136
  items = []
135
137
 
136
- @next_token = iterate(:select, params, @next_token) do |doc|
138
+ token = iterate(:select, params, @next_token) do |doc|
139
+ doc.css('Item').map do |i|
140
+ items << [i.at_css('Name').content, attrs_to_hash(i)]
141
+ end
142
+ end
143
+
144
+ @current_token = @next_token
145
+ @next_token = token
146
+
147
+ return items
148
+ end
149
+
150
+ def current_list(consistent = false)
151
+ unless @select_expr
152
+ return []
153
+ end
154
+
155
+ params = {:SelectExpression => @select_expr, :ConsistentRead => consistent}
156
+ items = []
157
+
158
+ iterate(:select, params, @current_token || :first) do |doc|
137
159
  doc.css('Item').map do |i|
138
160
  items << [i.at_css('Name').content, attrs_to_hash(i)]
139
161
  end
@@ -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', 256)
16
+ module_eval(<<'...end sdb-parser.y/module_eval...', 'sdb-parser.y', 263)
17
17
 
18
18
  KEYWORDS = %w(
19
19
  ADD
@@ -90,6 +90,8 @@ def scan
90
90
  yield [:SELECT, tok + @ss.scan(/.*/)]
91
91
  elsif (tok = @ss.scan /NEXT\b/i)
92
92
  yield [:NEXT, @ss.scan(/\s*\|\s*.*/)]
93
+ elsif (tok = @ss.scan /CUR(RENT)?\b/i)
94
+ yield [:CURRENT, @ss.scan(/\s*\|\s*.*/)]
93
95
  elsif (tok = @ss.scan /NULL\b/i)
94
96
  yield [:NULL, nil]
95
97
  elsif (tok = @ss.scan /`([^`]|``)*`/)
@@ -98,8 +100,8 @@ def scan
98
100
  yield [:VALUE, tok.slice(1...-1).gsub(/''/, "'")]
99
101
  elsif (tok = @ss.scan /"([^"]|"")*"/) #"
100
102
  yield [:VALUE, tok.slice(1...-1).gsub(/""/, '"')]
101
- elsif (tok = @ss.scan /(0|[1-9]\d*)/)
102
- yield [:NATURAL_NUMBER, tok.to_i]
103
+ elsif (tok = @ss.scan /\d+(\.\d+)?/)
104
+ yield [:VALUE, tok]
103
105
  elsif (tok = @ss.scan /[,\(\)\*]/)
104
106
  yield [tok, tok]
105
107
  elsif (tok = @ss.scan /[a-z_$][-0-9a-z_$.]*\b/i)
@@ -133,57 +135,57 @@ end
133
135
  ##### State transition tables begin ###
134
136
 
135
137
  racc_action_table = [
136
- 14, 15, 69, 66, 27, 65, 31, 64, 44, 67,
137
- 67, 29, 16, 45, 65, 17, 64, 46, 18, 19,
138
- 20, 21, 42, 22, 23, 100, 96, 24, 25, 26,
139
- 73, 74, 38, 39, 95, 96, 59, 60, 47, 48,
140
- 49, 45, 50, 51, 52, 53, 54, 57, 57, 41,
141
- 61, 40, 37, 68, 43, 70, 71, 72, 36, 75,
142
- 57, 77, 78, 79, 80, 81, 31, 83, 84, 85,
143
- 86, 87, 89, 90, 91, 93, 94, 33, 97, 98,
144
- 93, 32 ]
138
+ 15, 9, 16, 71, 68, 29, 67, 33, 66, 46,
139
+ 69, 69, 31, 17, 47, 67, 18, 66, 48, 19,
140
+ 20, 21, 22, 23, 44, 24, 25, 102, 98, 26,
141
+ 27, 28, 75, 76, 40, 41, 97, 98, 61, 62,
142
+ 49, 50, 51, 47, 52, 53, 54, 55, 56, 59,
143
+ 59, 43, 63, 42, 39, 70, 45, 72, 73, 74,
144
+ 38, 77, 59, 79, 80, 81, 82, 83, 33, 85,
145
+ 86, 87, 88, 89, 91, 92, 93, 95, 96, 35,
146
+ 99, 100, 95, 34 ]
145
147
 
146
148
  racc_action_check = [
147
- 0, 0, 58, 55, 1, 54, 15, 54, 28, 58,
148
- 55, 15, 0, 30, 74, 0, 74, 32, 0, 0,
149
- 0, 0, 26, 0, 0, 99, 99, 0, 0, 0,
150
- 62, 62, 23, 23, 92, 92, 49, 49, 33, 33,
151
- 34, 35, 36, 37, 44, 45, 46, 47, 48, 25,
152
- 52, 24, 22, 57, 27, 59, 60, 61, 21, 66,
153
- 67, 68, 69, 70, 72, 73, 18, 75, 78, 79,
154
- 80, 81, 83, 84, 85, 87, 88, 17, 94, 96,
155
- 97, 16 ]
149
+ 0, 0, 0, 60, 57, 1, 56, 16, 56, 30,
150
+ 60, 57, 16, 0, 32, 76, 0, 76, 34, 0,
151
+ 0, 0, 0, 0, 28, 0, 0, 101, 101, 0,
152
+ 0, 0, 64, 64, 25, 25, 94, 94, 51, 51,
153
+ 35, 35, 36, 37, 38, 39, 46, 47, 48, 49,
154
+ 50, 27, 54, 26, 24, 59, 29, 61, 62, 63,
155
+ 23, 68, 69, 70, 71, 72, 74, 75, 19, 77,
156
+ 80, 81, 82, 83, 85, 86, 87, 89, 90, 18,
157
+ 96, 98, 99, 17 ]
156
158
 
157
159
  racc_action_pointer = [
158
- -1, 4, nil, nil, nil, nil, nil, nil, nil, nil,
159
- nil, nil, nil, nil, nil, 2, 67, 73, 62, nil,
160
- nil, 35, 29, 6, 47, 45, 18, 54, 5, nil,
161
- 1, nil, 13, 21, 37, 29, 38, 39, nil, nil,
162
- nil, nil, nil, nil, 40, 41, 36, 43, 44, 32,
163
- nil, nil, 45, nil, 1, -2, nil, 46, -3, 50,
164
- 50, 51, 19, nil, nil, nil, 53, 56, 53, 56,
165
- 57, nil, 57, 50, 10, 60, nil, nil, 61, 62,
166
- 62, 61, nil, 64, 65, 66, nil, 67, 64, nil,
167
- nil, nil, 23, nil, 68, nil, 71, 72, nil, 14,
168
- nil ]
160
+ -1, 5, nil, nil, nil, nil, nil, nil, nil, nil,
161
+ nil, nil, nil, nil, nil, nil, 2, 68, 74, 63,
162
+ nil, nil, nil, 35, 29, 6, 48, 46, 19, 56,
163
+ 5, nil, 1, nil, 13, 22, 38, 30, 39, 40,
164
+ nil, nil, nil, nil, nil, nil, 41, 42, 37, 44,
165
+ 45, 33, nil, nil, 46, nil, 1, -2, nil, 47,
166
+ -3, 51, 51, 52, 20, nil, nil, nil, 54, 57,
167
+ 54, 57, 58, nil, 58, 51, 10, 61, nil, nil,
168
+ 62, 63, 63, 62, nil, 65, 66, 67, nil, 68,
169
+ 65, nil, nil, nil, 24, nil, 69, nil, 72, 73,
170
+ nil, 15, nil ]
169
171
 
170
172
  racc_action_default = [
171
- -55, -55, -1, -2, -3, -4, -5, -6, -7, -8,
172
- -9, -10, -11, -12, -13, -15, -55, -55, -40, -42,
173
- -43, -55, -55, -55, -55, -55, -55, -55, -55, -16,
174
- -17, -51, -55, -55, -55, -41, -55, -55, -46, -47,
175
- -48, -49, -50, 101, -55, -55, -55, -55, -55, -55,
176
- -44, -45, -55, -52, -55, -26, -33, -55, -30, -37,
177
- -38, -55, -55, -21, -23, -24, -27, -55, -55, -31,
178
- -55, -39, -55, -55, -55, -28, -34, -35, -32, -55,
179
- -55, -55, -22, -55, -55, -55, -14, -55, -20, -25,
180
- -29, -36, -55, -53, -55, -18, -55, -55, -54, -55,
181
- -19 ]
173
+ -57, -57, -1, -2, -3, -4, -5, -6, -7, -8,
174
+ -9, -10, -11, -12, -13, -14, -16, -57, -57, -41,
175
+ -43, -44, -45, -57, -57, -57, -57, -57, -57, -57,
176
+ -57, -17, -18, -53, -57, -57, -57, -42, -57, -57,
177
+ -48, -49, -50, -51, -52, 103, -57, -57, -57, -57,
178
+ -57, -57, -46, -47, -57, -54, -57, -27, -34, -57,
179
+ -31, -38, -39, -57, -57, -22, -24, -25, -28, -57,
180
+ -57, -32, -57, -40, -57, -57, -57, -29, -35, -36,
181
+ -33, -57, -57, -57, -23, -57, -57, -57, -15, -57,
182
+ -21, -26, -30, -37, -57, -55, -57, -19, -57, -57,
183
+ -56, -57, -20 ]
182
184
 
183
185
  racc_goto_table = [
184
- 63, 92, 30, 55, 58, 35, 12, 6, 7, 8,
185
- 9, 99, 10, 11, 5, 13, 28, 1, 88, 4,
186
- 82, 62, 3, 2, 76, 34 ]
186
+ 65, 94, 32, 57, 60, 37, 13, 6, 7, 8,
187
+ 10, 101, 11, 12, 5, 14, 30, 1, 90, 4,
188
+ 84, 64, 3, 2, 78, 36 ]
187
189
 
188
190
  racc_goto_check = [
189
191
  19, 17, 15, 20, 20, 15, 12, 6, 7, 8,
@@ -192,109 +194,113 @@ racc_goto_check = [
192
194
 
193
195
  racc_goto_pointer = [
194
196
  nil, 17, 23, 22, 19, 14, 7, 8, 9, 10,
195
- 12, 13, 6, 15, 1, -13, -63, -86, -33, -54,
196
- -44, -43, 7 ]
197
+ 12, 13, 6, 15, 0, -14, -65, -88, -35, -56,
198
+ -46, -45, 6 ]
197
199
 
198
200
  racc_goto_default = [
199
201
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
200
202
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
201
- nil, 56, nil ]
203
+ nil, 58, nil ]
202
204
 
203
205
  racc_reduce_table = [
204
206
  0, 0, :racc_error,
205
- 1, 32, :_reduce_none,
206
- 1, 32, :_reduce_none,
207
- 1, 32, :_reduce_none,
208
- 1, 32, :_reduce_none,
209
- 1, 32, :_reduce_none,
210
- 1, 32, :_reduce_none,
211
- 1, 32, :_reduce_none,
212
- 1, 32, :_reduce_none,
213
- 1, 32, :_reduce_none,
214
- 1, 32, :_reduce_none,
215
- 1, 32, :_reduce_none,
216
- 1, 32, :_reduce_none,
217
- 1, 32, :_reduce_13,
218
- 8, 33, :_reduce_14,
219
- 0, 45, :_reduce_15,
220
- 1, 45, :_reduce_16,
221
- 1, 45, :_reduce_none,
222
- 3, 47, :_reduce_18,
223
- 5, 47, :_reduce_19,
224
- 8, 34, :_reduce_20,
225
- 1, 49, :_reduce_21,
226
- 3, 49, :_reduce_22,
227
- 1, 50, :_reduce_none,
228
- 1, 50, :_reduce_none,
229
- 8, 35, :_reduce_25,
230
- 4, 35, :_reduce_26,
231
- 5, 35, :_reduce_27,
232
- 6, 35, :_reduce_28,
233
- 8, 36, :_reduce_29,
234
- 4, 36, :_reduce_30,
235
- 5, 36, :_reduce_31,
236
- 6, 36, :_reduce_32,
237
- 1, 51, :_reduce_33,
238
- 3, 51, :_reduce_34,
239
- 3, 52, :_reduce_35,
240
- 8, 37, :_reduce_36,
241
- 4, 37, :_reduce_37,
242
- 4, 37, :_reduce_38,
243
- 5, 37, :_reduce_39,
244
- 0, 53, :_reduce_40,
245
- 1, 53, :_reduce_none,
246
- 1, 38, :_reduce_42,
247
- 1, 39, :_reduce_43,
248
- 3, 40, :_reduce_44,
249
- 3, 41, :_reduce_45,
250
- 2, 42, :_reduce_46,
251
- 2, 42, :_reduce_47,
252
- 2, 43, :_reduce_48,
207
+ 1, 34, :_reduce_none,
208
+ 1, 34, :_reduce_none,
209
+ 1, 34, :_reduce_none,
210
+ 1, 34, :_reduce_none,
211
+ 1, 34, :_reduce_none,
212
+ 1, 34, :_reduce_none,
213
+ 1, 34, :_reduce_none,
214
+ 1, 34, :_reduce_none,
215
+ 1, 34, :_reduce_none,
216
+ 1, 34, :_reduce_none,
217
+ 1, 34, :_reduce_none,
218
+ 1, 34, :_reduce_none,
219
+ 1, 34, :_reduce_none,
220
+ 1, 34, :_reduce_14,
221
+ 8, 35, :_reduce_15,
222
+ 0, 47, :_reduce_16,
223
+ 1, 47, :_reduce_17,
224
+ 1, 47, :_reduce_none,
225
+ 3, 49, :_reduce_19,
226
+ 5, 49, :_reduce_20,
227
+ 8, 36, :_reduce_21,
228
+ 1, 51, :_reduce_22,
229
+ 3, 51, :_reduce_23,
230
+ 1, 52, :_reduce_none,
231
+ 1, 52, :_reduce_none,
232
+ 8, 37, :_reduce_26,
233
+ 4, 37, :_reduce_27,
234
+ 5, 37, :_reduce_28,
235
+ 6, 37, :_reduce_29,
236
+ 8, 38, :_reduce_30,
237
+ 4, 38, :_reduce_31,
238
+ 5, 38, :_reduce_32,
239
+ 6, 38, :_reduce_33,
240
+ 1, 53, :_reduce_34,
241
+ 3, 53, :_reduce_35,
242
+ 3, 54, :_reduce_36,
243
+ 8, 39, :_reduce_37,
244
+ 4, 39, :_reduce_38,
245
+ 4, 39, :_reduce_39,
246
+ 5, 39, :_reduce_40,
247
+ 0, 55, :_reduce_41,
248
+ 1, 55, :_reduce_none,
249
+ 1, 40, :_reduce_43,
250
+ 1, 41, :_reduce_44,
251
+ 1, 41, :_reduce_45,
252
+ 3, 42, :_reduce_46,
253
+ 3, 43, :_reduce_47,
254
+ 2, 44, :_reduce_48,
253
255
  2, 44, :_reduce_49,
254
- 2, 44, :_reduce_50,
255
- 1, 46, :_reduce_51,
256
- 3, 46, :_reduce_52,
256
+ 2, 45, :_reduce_50,
257
+ 2, 46, :_reduce_51,
258
+ 2, 46, :_reduce_52,
257
259
  1, 48, :_reduce_53,
258
- 3, 48, :_reduce_54 ]
260
+ 3, 48, :_reduce_54,
261
+ 1, 50, :_reduce_55,
262
+ 3, 50, :_reduce_56 ]
259
263
 
260
- racc_reduce_n = 55
264
+ racc_reduce_n = 57
261
265
 
262
- racc_shift_n = 101
266
+ racc_shift_n = 103
263
267
 
264
268
  racc_token_table = {
265
269
  false => 0,
266
270
  :error => 1,
267
- :GET => 2,
268
- :FROM => 3,
269
- :IDENTIFIER => 4,
270
- :WHERE => 5,
271
- :ITEMNAME => 6,
272
- "=" => 7,
273
- :VALUE => 8,
274
- "*" => 9,
275
- "(" => 10,
276
- ")" => 11,
277
- "," => 12,
278
- :INSERT => 13,
279
- :INTO => 14,
280
- :VALUES => 15,
281
- :UPDATE => 16,
282
- :SET => 17,
283
- :ADD => 18,
284
- :DELETE => 19,
285
- :SELECT => 20,
286
- :NEXT => 21,
287
- :CREATE => 22,
288
- :DOMAIN => 23,
289
- :DROP => 24,
290
- :SHOW => 25,
291
- :DOMAINS => 26,
292
- :REGIONS => 27,
293
- :USE => 28,
294
- :DESC => 29,
295
- :DESCRIBE => 30 }
296
-
297
- racc_nt_base = 31
271
+ :current_stmt => 2,
272
+ :GET => 3,
273
+ :FROM => 4,
274
+ :IDENTIFIER => 5,
275
+ :WHERE => 6,
276
+ :ITEMNAME => 7,
277
+ "=" => 8,
278
+ :VALUE => 9,
279
+ "*" => 10,
280
+ "(" => 11,
281
+ ")" => 12,
282
+ "," => 13,
283
+ :INSERT => 14,
284
+ :INTO => 15,
285
+ :VALUES => 16,
286
+ :UPDATE => 17,
287
+ :SET => 18,
288
+ :ADD => 19,
289
+ :DELETE => 20,
290
+ :SELECT => 21,
291
+ :NEXT => 22,
292
+ :CURRENT => 23,
293
+ :CREATE => 24,
294
+ :DOMAIN => 25,
295
+ :DROP => 26,
296
+ :SHOW => 27,
297
+ :DOMAINS => 28,
298
+ :REGIONS => 29,
299
+ :USE => 30,
300
+ :DESC => 31,
301
+ :DESCRIBE => 32 }
302
+
303
+ racc_nt_base = 33
298
304
 
299
305
  racc_use_result_var = false
300
306
 
@@ -317,6 +323,7 @@ Racc_arg = [
317
323
  Racc_token_to_s_table = [
318
324
  "$end",
319
325
  "error",
326
+ "current_stmt",
320
327
  "GET",
321
328
  "FROM",
322
329
  "IDENTIFIER",
@@ -337,6 +344,7 @@ Racc_token_to_s_table = [
337
344
  "DELETE",
338
345
  "SELECT",
339
346
  "NEXT",
347
+ "CURRENT",
340
348
  "CREATE",
341
349
  "DOMAIN",
342
350
  "DROP",
@@ -400,52 +408,54 @@ Racc_debug_parser = false
400
408
 
401
409
  # reduce 12 omitted
402
410
 
403
- module_eval(<<'.,.,', 'sdb-parser.y', 17)
404
- def _reduce_13(val, _values)
411
+ # reduce 13 omitted
412
+
413
+ module_eval(<<'.,.,', 'sdb-parser.y', 18)
414
+ def _reduce_14(val, _values)
405
415
  @stmt_with_expr
406
416
 
407
417
  end
408
418
  .,.,
409
419
 
410
- module_eval(<<'.,.,', 'sdb-parser.y', 22)
411
- def _reduce_14(val, _values)
420
+ module_eval(<<'.,.,', 'sdb-parser.y', 23)
421
+ def _reduce_15(val, _values)
412
422
  struct(:GET, :domain => val[3], :item_name => val[7], :attr_names => val[1])
413
423
 
414
424
  end
415
425
  .,.,
416
426
 
417
- module_eval(<<'.,.,', 'sdb-parser.y', 27)
418
- def _reduce_15(val, _values)
427
+ module_eval(<<'.,.,', 'sdb-parser.y', 28)
428
+ def _reduce_16(val, _values)
419
429
  []
420
430
 
421
431
  end
422
432
  .,.,
423
433
 
424
- module_eval(<<'.,.,', 'sdb-parser.y', 31)
425
- def _reduce_16(val, _values)
434
+ module_eval(<<'.,.,', 'sdb-parser.y', 32)
435
+ def _reduce_17(val, _values)
426
436
  []
427
437
 
428
438
  end
429
439
  .,.,
430
440
 
431
- # reduce 17 omitted
441
+ # reduce 18 omitted
432
442
 
433
- module_eval(<<'.,.,', 'sdb-parser.y', 37)
434
- def _reduce_18(val, _values)
443
+ module_eval(<<'.,.,', 'sdb-parser.y', 38)
444
+ def _reduce_19(val, _values)
435
445
  [val[1]]
436
446
 
437
447
  end
438
448
  .,.,
439
449
 
440
- module_eval(<<'.,.,', 'sdb-parser.y', 41)
441
- def _reduce_19(val, _values)
450
+ module_eval(<<'.,.,', 'sdb-parser.y', 42)
451
+ def _reduce_20(val, _values)
442
452
  val[0] + [val[3]]
443
453
 
444
454
  end
445
455
  .,.,
446
456
 
447
- module_eval(<<'.,.,', 'sdb-parser.y', 46)
448
- def _reduce_20(val, _values)
457
+ module_eval(<<'.,.,', 'sdb-parser.y', 47)
458
+ def _reduce_21(val, _values)
449
459
  items = val[7].map do |vals|
450
460
  unless val[4].length == vals.length
451
461
  raise Racc::ParseError, 'The number of an attribute and values differs'
@@ -470,26 +480,26 @@ module_eval(<<'.,.,', 'sdb-parser.y', 46)
470
480
  end
471
481
  .,.,
472
482
 
473
- module_eval(<<'.,.,', 'sdb-parser.y', 70)
474
- def _reduce_21(val, _values)
483
+ module_eval(<<'.,.,', 'sdb-parser.y', 71)
484
+ def _reduce_22(val, _values)
475
485
  [val[0]]
476
486
 
477
487
  end
478
488
  .,.,
479
489
 
480
- module_eval(<<'.,.,', 'sdb-parser.y', 74)
481
- def _reduce_22(val, _values)
490
+ module_eval(<<'.,.,', 'sdb-parser.y', 75)
491
+ def _reduce_23(val, _values)
482
492
  val[0] + [val[2]]
483
493
 
484
494
  end
485
495
  .,.,
486
496
 
487
- # reduce 23 omitted
488
-
489
497
  # reduce 24 omitted
490
498
 
491
- module_eval(<<'.,.,', 'sdb-parser.y', 82)
492
- def _reduce_25(val, _values)
499
+ # reduce 25 omitted
500
+
501
+ module_eval(<<'.,.,', 'sdb-parser.y', 83)
502
+ def _reduce_26(val, _values)
493
503
  attrs = {}
494
504
  val[3].each {|k, v| attrs[k] = v }
495
505
  struct(:UPDATE, :domain => val[1], :items => [[val[7], attrs]])
@@ -497,8 +507,8 @@ module_eval(<<'.,.,', 'sdb-parser.y', 82)
497
507
  end
498
508
  .,.,
499
509
 
500
- module_eval(<<'.,.,', 'sdb-parser.y', 88)
501
- def _reduce_26(val, _values)
510
+ module_eval(<<'.,.,', 'sdb-parser.y', 89)
511
+ def _reduce_27(val, _values)
502
512
  attrs = {}
503
513
  val[3].each {|k, v| attrs[k] = v }
504
514
  @stmt_with_expr = struct(:UPDATE_WITH_EXPR, :domain => val[1], :attrs => attrs, :expr => '')
@@ -506,8 +516,8 @@ module_eval(<<'.,.,', 'sdb-parser.y', 88)
506
516
  end
507
517
  .,.,
508
518
 
509
- module_eval(<<'.,.,', 'sdb-parser.y', 94)
510
- def _reduce_27(val, _values)
519
+ module_eval(<<'.,.,', 'sdb-parser.y', 95)
520
+ def _reduce_28(val, _values)
511
521
  attrs = {}
512
522
  val[3].each {|k, v| attrs[k] = v }
513
523
  @stmt_with_expr = struct(:UPDATE_WITH_EXPR, :domain => val[1], :attrs => attrs, :expr => 'WHERE ')
@@ -515,8 +525,8 @@ module_eval(<<'.,.,', 'sdb-parser.y', 94)
515
525
  end
516
526
  .,.,
517
527
 
518
- module_eval(<<'.,.,', 'sdb-parser.y', 100)
519
- def _reduce_28(val, _values)
528
+ module_eval(<<'.,.,', 'sdb-parser.y', 101)
529
+ def _reduce_29(val, _values)
520
530
  attrs = {}
521
531
  val[3].each {|k, v| attrs[k] = v }
522
532
  @stmt_with_expr = struct(:UPDATE_WITH_EXPR, :domain => val[1], :attrs => attrs, :expr => 'WHERE itemName')
@@ -524,8 +534,8 @@ module_eval(<<'.,.,', 'sdb-parser.y', 100)
524
534
  end
525
535
  .,.,
526
536
 
527
- module_eval(<<'.,.,', 'sdb-parser.y', 107)
528
- def _reduce_29(val, _values)
537
+ module_eval(<<'.,.,', 'sdb-parser.y', 108)
538
+ def _reduce_30(val, _values)
529
539
  attrs = {}
530
540
  val[3].each {|k, v| attrs[k] = v }
531
541
  struct(:MERGE, :domain => val[1], :items => [[val[7], attrs]])
@@ -533,8 +543,8 @@ module_eval(<<'.,.,', 'sdb-parser.y', 107)
533
543
  end
534
544
  .,.,
535
545
 
536
- module_eval(<<'.,.,', 'sdb-parser.y', 113)
537
- def _reduce_30(val, _values)
546
+ module_eval(<<'.,.,', 'sdb-parser.y', 114)
547
+ def _reduce_31(val, _values)
538
548
  attrs = {}
539
549
  val[3].each {|k, v| attrs[k] = v }
540
550
  @stmt_with_expr = struct(:MERGE_WITH_EXPR, :domain => val[1], :attrs => attrs, :expr => '')
@@ -542,8 +552,8 @@ module_eval(<<'.,.,', 'sdb-parser.y', 113)
542
552
  end
543
553
  .,.,
544
554
 
545
- module_eval(<<'.,.,', 'sdb-parser.y', 119)
546
- def _reduce_31(val, _values)
555
+ module_eval(<<'.,.,', 'sdb-parser.y', 120)
556
+ def _reduce_32(val, _values)
547
557
  attrs = {}
548
558
  val[3].each {|k, v| attrs[k] = v }
549
559
  @stmt_with_expr = struct(:MERGE_WITH_EXPR, :domain => val[1], :attrs => attrs, :expr => 'WHERE ')
@@ -551,8 +561,8 @@ module_eval(<<'.,.,', 'sdb-parser.y', 119)
551
561
  end
552
562
  .,.,
553
563
 
554
- module_eval(<<'.,.,', 'sdb-parser.y', 125)
555
- def _reduce_32(val, _values)
564
+ module_eval(<<'.,.,', 'sdb-parser.y', 126)
565
+ def _reduce_33(val, _values)
556
566
  attrs = {}
557
567
  val[3].each {|k, v| attrs[k] = v }
558
568
  @stmt_with_expr = struct(:MERGE_WITH_EXPR, :domain => val[1], :attrs => attrs, :expr => 'WHERE itemName')
@@ -560,66 +570,66 @@ module_eval(<<'.,.,', 'sdb-parser.y', 125)
560
570
  end
561
571
  .,.,
562
572
 
563
- module_eval(<<'.,.,', 'sdb-parser.y', 132)
564
- def _reduce_33(val, _values)
573
+ module_eval(<<'.,.,', 'sdb-parser.y', 133)
574
+ def _reduce_34(val, _values)
565
575
  [val[0]]
566
576
 
567
577
  end
568
578
  .,.,
569
579
 
570
- module_eval(<<'.,.,', 'sdb-parser.y', 136)
571
- def _reduce_34(val, _values)
580
+ module_eval(<<'.,.,', 'sdb-parser.y', 137)
581
+ def _reduce_35(val, _values)
572
582
  val[0] + [val[2]]
573
583
 
574
584
  end
575
585
  .,.,
576
586
 
577
- module_eval(<<'.,.,', 'sdb-parser.y', 141)
578
- def _reduce_35(val, _values)
587
+ module_eval(<<'.,.,', 'sdb-parser.y', 142)
588
+ def _reduce_36(val, _values)
579
589
  [val[0], val[2]]
580
590
 
581
591
  end
582
592
  .,.,
583
593
 
584
- module_eval(<<'.,.,', 'sdb-parser.y', 146)
585
- def _reduce_36(val, _values)
594
+ module_eval(<<'.,.,', 'sdb-parser.y', 147)
595
+ def _reduce_37(val, _values)
586
596
  struct(:DELETE, :domain => val[3], :items => [[val[7], val[1]]])
587
597
 
588
598
  end
589
599
  .,.,
590
600
 
591
- module_eval(<<'.,.,', 'sdb-parser.y', 150)
592
- def _reduce_37(val, _values)
601
+ module_eval(<<'.,.,', 'sdb-parser.y', 151)
602
+ def _reduce_38(val, _values)
593
603
  @stmt_with_expr = struct(:DELETE_WITH_EXPR, :domain => val[3], :attrs => val[1], :expr => '')
594
604
 
595
605
  end
596
606
  .,.,
597
607
 
598
- module_eval(<<'.,.,', 'sdb-parser.y', 154)
599
- def _reduce_38(val, _values)
608
+ module_eval(<<'.,.,', 'sdb-parser.y', 155)
609
+ def _reduce_39(val, _values)
600
610
  @stmt_with_expr = struct(:DELETE_WITH_EXPR, :domain => val[3], :attrs => val[1], :expr => 'WHERE ')
601
611
 
602
612
  end
603
613
  .,.,
604
614
 
605
- module_eval(<<'.,.,', 'sdb-parser.y', 158)
606
- def _reduce_39(val, _values)
615
+ module_eval(<<'.,.,', 'sdb-parser.y', 159)
616
+ def _reduce_40(val, _values)
607
617
  @stmt_with_expr = struct(:DELETE_WITH_EXPR, :domain => val[3], :attrs => val[1], :expr => 'WHERE itemName')
608
618
 
609
619
  end
610
620
  .,.,
611
621
 
612
- module_eval(<<'.,.,', 'sdb-parser.y', 163)
613
- def _reduce_40(val, _values)
622
+ module_eval(<<'.,.,', 'sdb-parser.y', 164)
623
+ def _reduce_41(val, _values)
614
624
  []
615
625
 
616
626
  end
617
627
  .,.,
618
628
 
619
- # reduce 41 omitted
629
+ # reduce 42 omitted
620
630
 
621
- module_eval(<<'.,.,', 'sdb-parser.y', 169)
622
- def _reduce_42(val, _values)
631
+ module_eval(<<'.,.,', 'sdb-parser.y', 170)
632
+ def _reduce_43(val, _values)
623
633
  query = ''
624
634
  ruby = nil
625
635
 
@@ -646,86 +656,94 @@ module_eval(<<'.,.,', 'sdb-parser.y', 169)
646
656
  end
647
657
  .,.,
648
658
 
649
- module_eval(<<'.,.,', 'sdb-parser.y', 195)
650
- def _reduce_43(val, _values)
659
+ module_eval(<<'.,.,', 'sdb-parser.y', 196)
660
+ def _reduce_44(val, _values)
651
661
  ruby = val[0].sub(/\A\s*\|\s*/, '') if val[0]
652
662
  struct(:NEXT, :ruby => ruby)
653
663
 
654
664
  end
655
665
  .,.,
656
666
 
657
- module_eval(<<'.,.,', 'sdb-parser.y', 201)
658
- def _reduce_44(val, _values)
667
+ module_eval(<<'.,.,', 'sdb-parser.y', 202)
668
+ def _reduce_45(val, _values)
669
+ ruby = val[0].sub(/\A\s*\|\s*/, '') if val[0]
670
+ struct(:CURRENT, :ruby => ruby)
671
+
672
+ end
673
+ .,.,
674
+
675
+ module_eval(<<'.,.,', 'sdb-parser.y', 208)
676
+ def _reduce_46(val, _values)
659
677
  struct(:CREATE, :domain => val[2])
660
678
 
661
679
  end
662
680
  .,.,
663
681
 
664
- module_eval(<<'.,.,', 'sdb-parser.y', 206)
665
- def _reduce_45(val, _values)
682
+ module_eval(<<'.,.,', 'sdb-parser.y', 213)
683
+ def _reduce_47(val, _values)
666
684
  struct(:DROP, :domain => val[2])
667
685
 
668
686
  end
669
687
  .,.,
670
688
 
671
- module_eval(<<'.,.,', 'sdb-parser.y', 211)
672
- def _reduce_46(val, _values)
689
+ module_eval(<<'.,.,', 'sdb-parser.y', 218)
690
+ def _reduce_48(val, _values)
673
691
  struct(:SHOW, :operand => :domains)
674
692
 
675
693
  end
676
694
  .,.,
677
695
 
678
- module_eval(<<'.,.,', 'sdb-parser.y', 215)
679
- def _reduce_47(val, _values)
696
+ module_eval(<<'.,.,', 'sdb-parser.y', 222)
697
+ def _reduce_49(val, _values)
680
698
  struct(:SHOW, :operand => :regions)
681
699
 
682
700
  end
683
701
  .,.,
684
702
 
685
- module_eval(<<'.,.,', 'sdb-parser.y', 219)
686
- def _reduce_48(val, _values)
703
+ module_eval(<<'.,.,', 'sdb-parser.y', 226)
704
+ def _reduce_50(val, _values)
687
705
  struct(:USE, :endpoint => val[1])
688
706
 
689
707
  end
690
708
  .,.,
691
709
 
692
- module_eval(<<'.,.,', 'sdb-parser.y', 223)
693
- def _reduce_49(val, _values)
710
+ module_eval(<<'.,.,', 'sdb-parser.y', 230)
711
+ def _reduce_51(val, _values)
694
712
  struct(:DESCRIBE, :domain => val[1])
695
713
 
696
714
  end
697
715
  .,.,
698
716
 
699
- module_eval(<<'.,.,', 'sdb-parser.y', 227)
700
- def _reduce_50(val, _values)
717
+ module_eval(<<'.,.,', 'sdb-parser.y', 234)
718
+ def _reduce_52(val, _values)
701
719
  struct(:DESCRIBE, :domain => val[1])
702
720
 
703
721
  end
704
722
  .,.,
705
723
 
706
- module_eval(<<'.,.,', 'sdb-parser.y', 232)
707
- def _reduce_51(val, _values)
724
+ module_eval(<<'.,.,', 'sdb-parser.y', 239)
725
+ def _reduce_53(val, _values)
708
726
  [val[0]]
709
727
 
710
728
  end
711
729
  .,.,
712
730
 
713
- module_eval(<<'.,.,', 'sdb-parser.y', 236)
714
- def _reduce_52(val, _values)
731
+ module_eval(<<'.,.,', 'sdb-parser.y', 243)
732
+ def _reduce_54(val, _values)
715
733
  val[0] + [val[2]]
716
734
 
717
735
  end
718
736
  .,.,
719
737
 
720
- module_eval(<<'.,.,', 'sdb-parser.y', 241)
721
- def _reduce_53(val, _values)
738
+ module_eval(<<'.,.,', 'sdb-parser.y', 248)
739
+ def _reduce_55(val, _values)
722
740
  [val[0]]
723
741
 
724
742
  end
725
743
  .,.,
726
744
 
727
- module_eval(<<'.,.,', 'sdb-parser.y', 245)
728
- def _reduce_54(val, _values)
745
+ module_eval(<<'.,.,', 'sdb-parser.y', 252)
746
+ def _reduce_56(val, _values)
729
747
  [val[0], val[2]].flatten
730
748
 
731
749
  end
@@ -8,6 +8,7 @@ rule
8
8
  | delete_stmt
9
9
  | select_stmt
10
10
  | next_stmt
11
+ | current_stmt
11
12
  | create_stmt
12
13
  | drop_stmt
13
14
  | show_stmt
@@ -197,6 +198,12 @@ rule
197
198
  struct(:NEXT, :ruby => ruby)
198
199
  }
199
200
 
201
+ next_stmt : CURRENT
202
+ {
203
+ ruby = val[0].sub(/\A\s*\|\s*/, '') if val[0]
204
+ struct(:CURRENT, :ruby => ruby)
205
+ }
206
+
200
207
  create_stmt : CREATE DOMAIN IDENTIFIER
201
208
  {
202
209
  struct(:CREATE, :domain => val[2])
@@ -329,6 +336,8 @@ def scan
329
336
  yield [:SELECT, tok + @ss.scan(/.*/)]
330
337
  elsif (tok = @ss.scan /NEXT\b/i)
331
338
  yield [:NEXT, @ss.scan(/\s*\|\s*.*/)]
339
+ elsif (tok = @ss.scan /CUR(RENT)?\b/i)
340
+ yield [:CURRENT, @ss.scan(/\s*\|\s*.*/)]
332
341
  elsif (tok = @ss.scan /NULL\b/i)
333
342
  yield [:NULL, nil]
334
343
  elsif (tok = @ss.scan /`([^`]|``)*`/)
@@ -337,8 +346,8 @@ def scan
337
346
  yield [:VALUE, tok.slice(1...-1).gsub(/''/, "'")]
338
347
  elsif (tok = @ss.scan /"([^"]|"")*"/) #"
339
348
  yield [:VALUE, tok.slice(1...-1).gsub(/""/, '"')]
340
- elsif (tok = @ss.scan /(0|[1-9]\d*)/)
341
- yield [:NATURAL_NUMBER, tok.to_i]
349
+ elsif (tok = @ss.scan /\d+(\.\d+)?/)
350
+ yield [:VALUE, tok]
342
351
  elsif (tok = @ss.scan /[,\(\)\*]/)
343
352
  yield [tok, tok]
344
353
  elsif (tok = @ss.scan /[a-z_$][-0-9a-z_$.]*\b/i)
@@ -132,12 +132,14 @@ module SimpleDB
132
132
  rownum = items.length
133
133
  @driver.delete(parsed.domain, items)
134
134
  Rownum.new(rownum)
135
- when :SELECT, :NEXT
135
+ when :SELECT, :NEXT, :CURRENT
136
136
  items = case command
137
137
  when :SELECT
138
138
  @driver.select(parsed.query, consistent, true)
139
139
  when :NEXT
140
140
  @driver.next_list(consistent)
141
+ when :CURRENT
142
+ @driver.current_list(consistent)
141
143
  else
142
144
  raise 'must not happen'
143
145
  end
metadata CHANGED
@@ -1,59 +1,55 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: sdbcli
3
- version: !ruby/object:Gem::Version
4
- hash: 17
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.3.6
5
5
  prerelease:
6
- segments:
7
- - 1
8
- - 3
9
- - 5
10
- version: 1.3.5
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - winebarrel
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2013-02-04 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2013-02-04 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: nokogiri
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
32
22
  type: :runtime
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: json
36
23
  prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: json
32
+ requirement: !ruby/object:Gem::Requirement
38
33
  none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- hash: 3
43
- segments:
44
- - 0
45
- version: "0"
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
46
38
  type: :runtime
47
- version_requirements: *id002
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
48
46
  description:
49
47
  email: sgwr_dts@yahoo.co.jp
50
- executables:
48
+ executables:
51
49
  - sdbcli
52
50
  extensions: []
53
-
54
51
  extra_rdoc_files: []
55
-
56
- files:
52
+ files:
57
53
  - README
58
54
  - bin/sdbcli
59
55
  - lib/sdbcli/sdb-client.rb
@@ -64,36 +60,26 @@ files:
64
60
  - lib/sdbcli.rb
65
61
  homepage: https://bitbucket.org/winebarrel/sdbcli
66
62
  licenses: []
67
-
68
63
  post_install_message:
69
64
  rdoc_options: []
70
-
71
- require_paths:
65
+ require_paths:
72
66
  - lib
73
- required_ruby_version: !ruby/object:Gem::Requirement
67
+ required_ruby_version: !ruby/object:Gem::Requirement
74
68
  none: false
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- hash: 3
79
- segments:
80
- - 0
81
- version: "0"
82
- required_rubygems_version: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ! '>='
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ required_rubygems_version: !ruby/object:Gem::Requirement
83
74
  none: false
84
- requirements:
85
- - - ">="
86
- - !ruby/object:Gem::Version
87
- hash: 3
88
- segments:
89
- - 0
90
- version: "0"
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
91
79
  requirements: []
92
-
93
80
  rubyforge_project:
94
- rubygems_version: 1.8.24
81
+ rubygems_version: 1.8.23
95
82
  signing_key:
96
83
  specification_version: 3
97
84
  summary: sdbcli is an interactive command-line client of Amazon SimpleDB.
98
85
  test_files: []
99
-