sdbcli 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README +1 -1
- data/lib/sdbcli/sdb-parser.tab.rb +120 -100
- data/lib/sdbcli/sdb-parser.y +26 -6
- metadata +3 -3
data/README
CHANGED
@@ -42,7 +42,7 @@ https://bitbucket.org/winebarrel/sdbcli
|
|
42
42
|
|
43
43
|
SELECT output_list FROM domain_name [where expression] [sort_instructions] [limit limit]
|
44
44
|
queries using the SELECT statement
|
45
|
-
|
45
|
+
|
46
46
|
ap-northeast-1> select * from test
|
47
47
|
---
|
48
48
|
- [itemname1, {attr1: val1, attr2: val2}]
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#
|
2
2
|
# DO NOT MODIFY!!!!
|
3
3
|
# This file is automatically generated by racc 1.4.5
|
4
|
-
# from racc grammer file "sdb-parser.y".
|
4
|
+
# from racc grammer file "lib/sdbcli/sdb-parser.y".
|
5
5
|
#
|
6
6
|
|
7
7
|
require 'racc/parser'
|
@@ -15,7 +15,7 @@ module SimpleDB
|
|
15
15
|
|
16
16
|
class Parser < Racc::Parser
|
17
17
|
|
18
|
-
module_eval <<'..end sdb-parser.y modeval..
|
18
|
+
module_eval <<'..end lib/sdbcli/sdb-parser.y modeval..idca9c582f51', 'lib/sdbcli/sdb-parser.y', 139
|
19
19
|
|
20
20
|
KEYWORDS = %w(
|
21
21
|
AND
|
@@ -117,7 +117,7 @@ def self.parse(obj)
|
|
117
117
|
self.new(obj).parse
|
118
118
|
end
|
119
119
|
|
120
|
-
..end sdb-parser.y modeval..
|
120
|
+
..end lib/sdbcli/sdb-parser.y modeval..idca9c582f51
|
121
121
|
|
122
122
|
##### racc 1.4.5 generates ###
|
123
123
|
|
@@ -137,84 +137,81 @@ racc_reduce_table = [
|
|
137
137
|
1, 36, :_reduce_12,
|
138
138
|
1, 36, :_reduce_none,
|
139
139
|
10, 29, :_reduce_14,
|
140
|
-
|
141
|
-
|
142
|
-
1, 40, :
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
3,
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
140
|
+
1, 38, :_reduce_15,
|
141
|
+
3, 38, :_reduce_16,
|
142
|
+
1, 40, :_reduce_none,
|
143
|
+
1, 40, :_reduce_none,
|
144
|
+
8, 30, :_reduce_19,
|
145
|
+
1, 41, :_reduce_20,
|
146
|
+
3, 41, :_reduce_21,
|
147
|
+
3, 42, :_reduce_22,
|
148
|
+
8, 31, :_reduce_23,
|
149
|
+
0, 43, :_reduce_24,
|
150
|
+
1, 43, :_reduce_none,
|
151
|
+
1, 32, :_reduce_26,
|
152
|
+
3, 33, :_reduce_27,
|
153
|
+
3, 34, :_reduce_28,
|
154
|
+
2, 35, :_reduce_29,
|
155
|
+
1, 37, :_reduce_30,
|
156
|
+
3, 37, :_reduce_31,
|
157
|
+
1, 39, :_reduce_32,
|
158
|
+
3, 39, :_reduce_33 ]
|
159
|
+
|
160
|
+
racc_reduce_n = 34
|
161
|
+
|
162
|
+
racc_shift_n = 76
|
160
163
|
|
161
164
|
racc_action_table = [
|
162
|
-
6, 8,
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
64, 65,
|
165
|
+
6, 8, 53, 24, 46, 73, 48, 74, 25, 1,
|
166
|
+
24, 55, 52, 56, 46, 10, 48, 13, 15, 17,
|
167
|
+
30, 3, 5, 31, 32, 33, 34, 35, 36, 34,
|
168
|
+
37, 38, 39, 40, 41, 42, 45, 27, 50, 51,
|
169
|
+
26, 54, 21, 57, 58, 42, 60, 61, 62, 20,
|
170
|
+
64, 65, 66, 67, 68, 69, 70, 72, 19, 75 ]
|
168
171
|
|
169
172
|
racc_action_check = [
|
170
|
-
0, 0, 43, 8,
|
171
|
-
|
172
|
-
|
173
|
-
33, 34, 36, 37,
|
174
|
-
|
175
|
-
|
173
|
+
0, 0, 43, 8, 56, 71, 56, 71, 8, 0,
|
174
|
+
13, 47, 43, 47, 39, 0, 39, 0, 0, 0,
|
175
|
+
17, 0, 0, 19, 20, 22, 23, 26, 27, 28,
|
176
|
+
29, 30, 31, 33, 34, 36, 37, 10, 40, 42,
|
177
|
+
9, 45, 5, 50, 51, 52, 53, 54, 55, 3,
|
178
|
+
57, 60, 61, 62, 64, 65, 66, 67, 1, 74 ]
|
176
179
|
|
177
180
|
racc_action_pointer = [
|
178
|
-
-2,
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
nil, nil,
|
181
|
+
-2, 46, nil, 27, nil, 17, nil, nil, -2, 40,
|
182
|
+
32, nil, nil, 5, nil, nil, nil, -2, nil, 18,
|
183
|
+
19, nil, 21, 10, nil, nil, 27, 10, 13, 26,
|
184
|
+
26, 19, nil, 28, 29, nil, 30, 31, nil, 9,
|
185
|
+
32, nil, 31, -4, nil, 35, nil, -3, nil, nil,
|
186
|
+
36, 35, 40, 39, 40, 33, -1, 42, nil, nil,
|
187
|
+
43, 44, 40, nil, 45, 46, 47, 48, nil, nil,
|
188
|
+
nil, -9, nil, nil, 50, nil ]
|
186
189
|
|
187
190
|
racc_action_default = [
|
188
|
-
-
|
189
|
-
-
|
190
|
-
-
|
191
|
-
-
|
192
|
-
-
|
193
|
-
-
|
194
|
-
-
|
195
|
-
-
|
191
|
+
-34, -34, -6, -34, -7, -34, -9, -8, -11, -34,
|
192
|
+
-34, -1, -2, -24, -3, -26, -4, -34, -5, -34,
|
193
|
+
-34, -29, -34, -13, -30, -12, -34, -34, -25, -34,
|
194
|
+
-34, -34, -28, -34, -34, 76, -34, -34, -27, -34,
|
195
|
+
-34, -31, -34, -34, -20, -34, -18, -34, -17, -15,
|
196
|
+
-34, -34, -34, -34, -34, -34, -34, -34, -22, -21,
|
197
|
+
-34, -34, -34, -16, -34, -34, -34, -34, -10, -19,
|
198
|
+
-23, -34, -32, -14, -34, -33 ]
|
196
199
|
|
197
200
|
racc_goto_table = [
|
198
|
-
23, 44, 7,
|
199
|
-
22, 9,
|
200
|
-
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
201
|
-
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
202
|
-
nil, nil, nil, nil, nil, nil, 61 ]
|
201
|
+
49, 23, 44, 7, 16, 18, 28, 2, 4, 14,
|
202
|
+
22, 9, 47, 71, 12, 43, 11, 63, 59, 29 ]
|
203
203
|
|
204
204
|
racc_goto_check = [
|
205
|
-
11,
|
206
|
-
10, 1, 12, 13,
|
207
|
-
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
208
|
-
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
209
|
-
nil, nil, nil, nil, nil, nil, 11 ]
|
205
|
+
14, 11, 16, 9, 5, 6, 11, 7, 8, 4,
|
206
|
+
10, 1, 12, 13, 3, 15, 2, 14, 16, 17 ]
|
210
207
|
|
211
208
|
racc_goto_pointer = [
|
212
|
-
nil, 11, 16, 9,
|
213
|
-
2, -
|
209
|
+
nil, 11, 16, 14, 9, 4, 5, 7, 8, 3,
|
210
|
+
2, -7, -27, -54, -39, -21, -34, 6 ]
|
214
211
|
|
215
212
|
racc_goto_default = [
|
216
213
|
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
217
|
-
nil, nil, nil, nil, nil, nil, nil ]
|
214
|
+
nil, nil, nil, nil, nil, nil, nil, nil ]
|
218
215
|
|
219
216
|
racc_token_table = {
|
220
217
|
false => 0,
|
@@ -303,8 +300,9 @@ Racc_token_to_s_table = [
|
|
303
300
|
'show_stmt',
|
304
301
|
'get_output_list',
|
305
302
|
'identifier_list',
|
306
|
-
'
|
303
|
+
'insert_identifier_list',
|
307
304
|
'value_list',
|
305
|
+
'itemname_identifier',
|
308
306
|
'set_clause_list',
|
309
307
|
'set_clause',
|
310
308
|
'delete_attr_list']
|
@@ -333,19 +331,19 @@ Racc_debug_parser = false
|
|
333
331
|
|
334
332
|
# reduce 9 omitted
|
335
333
|
|
336
|
-
module_eval <<'.,.,', 'sdb-parser.y', 17
|
334
|
+
module_eval <<'.,.,', 'lib/sdbcli/sdb-parser.y', 17
|
337
335
|
def _reduce_10( val, _values)
|
338
336
|
struct(:GET, :domain => val[3], :item_name => val[7], :attr_names => val[1])
|
339
337
|
end
|
340
338
|
.,.,
|
341
339
|
|
342
|
-
module_eval <<'.,.,', 'sdb-parser.y', 22
|
340
|
+
module_eval <<'.,.,', 'lib/sdbcli/sdb-parser.y', 22
|
343
341
|
def _reduce_11( val, _values)
|
344
342
|
[]
|
345
343
|
end
|
346
344
|
.,.,
|
347
345
|
|
348
|
-
module_eval <<'.,.,', 'sdb-parser.y', 26
|
346
|
+
module_eval <<'.,.,', 'lib/sdbcli/sdb-parser.y', 26
|
349
347
|
def _reduce_12( val, _values)
|
350
348
|
[]
|
351
349
|
end
|
@@ -353,105 +351,127 @@ module_eval <<'.,.,', 'sdb-parser.y', 26
|
|
353
351
|
|
354
352
|
# reduce 13 omitted
|
355
353
|
|
356
|
-
module_eval <<'.,.,', 'sdb-parser.y',
|
354
|
+
module_eval <<'.,.,', 'lib/sdbcli/sdb-parser.y', 47
|
357
355
|
def _reduce_14( val, _values)
|
356
|
+
unless val[4].length == val[8].length
|
357
|
+
raise Racc::ParseError, 'The number of an attribute and values differs'
|
358
|
+
end
|
359
|
+
|
358
360
|
attrs = {}
|
359
361
|
val[4].zip(val[8]).each {|k, v| attrs[k] = v }
|
360
|
-
item_name = attrs.
|
362
|
+
item_name = attrs.find {|k, v| k =~ /\AitemName\Z/i }
|
363
|
+
|
364
|
+
unless item_name
|
365
|
+
raise Racc::ParseError,'itemName is not contained in the INSERT statement'
|
366
|
+
end
|
367
|
+
|
368
|
+
attrs.delete(item_name[0])
|
369
|
+
item_name = item_name[1]
|
370
|
+
|
361
371
|
struct(:INSERT, :domain => val[2], :item_name => item_name, :attrs => attrs)
|
362
372
|
end
|
363
373
|
.,.,
|
364
374
|
|
365
|
-
module_eval <<'.,.,', 'sdb-parser.y',
|
375
|
+
module_eval <<'.,.,', 'lib/sdbcli/sdb-parser.y', 53
|
366
376
|
def _reduce_15( val, _values)
|
367
|
-
|
377
|
+
[val[0]]
|
368
378
|
end
|
369
379
|
.,.,
|
370
380
|
|
371
|
-
module_eval <<'.,.,', 'sdb-parser.y',
|
381
|
+
module_eval <<'.,.,', 'lib/sdbcli/sdb-parser.y', 57
|
372
382
|
def _reduce_16( val, _values)
|
383
|
+
val[0] + [val[2]]
|
384
|
+
end
|
385
|
+
.,.,
|
386
|
+
|
387
|
+
# reduce 17 omitted
|
388
|
+
|
389
|
+
# reduce 18 omitted
|
390
|
+
|
391
|
+
module_eval <<'.,.,', 'lib/sdbcli/sdb-parser.y', 67
|
392
|
+
def _reduce_19( val, _values)
|
373
393
|
attrs = {}
|
374
394
|
val[3].each {|k, v| attrs[k] = v }
|
375
395
|
struct(:UPDATE, :domain => val[1], :items => [[val[7], attrs]])
|
376
396
|
end
|
377
397
|
.,.,
|
378
398
|
|
379
|
-
module_eval <<'.,.,', 'sdb-parser.y',
|
380
|
-
def
|
399
|
+
module_eval <<'.,.,', 'lib/sdbcli/sdb-parser.y', 72
|
400
|
+
def _reduce_20( val, _values)
|
381
401
|
[val[0]]
|
382
402
|
end
|
383
403
|
.,.,
|
384
404
|
|
385
|
-
module_eval <<'.,.,', 'sdb-parser.y',
|
386
|
-
def
|
405
|
+
module_eval <<'.,.,', 'lib/sdbcli/sdb-parser.y', 76
|
406
|
+
def _reduce_21( val, _values)
|
387
407
|
val[0] + [val[2]]
|
388
408
|
end
|
389
409
|
.,.,
|
390
410
|
|
391
|
-
module_eval <<'.,.,', 'sdb-parser.y',
|
392
|
-
def
|
411
|
+
module_eval <<'.,.,', 'lib/sdbcli/sdb-parser.y', 81
|
412
|
+
def _reduce_22( val, _values)
|
393
413
|
[val[0], val[2]]
|
394
414
|
end
|
395
415
|
.,.,
|
396
416
|
|
397
|
-
module_eval <<'.,.,', 'sdb-parser.y',
|
398
|
-
def
|
417
|
+
module_eval <<'.,.,', 'lib/sdbcli/sdb-parser.y', 86
|
418
|
+
def _reduce_23( val, _values)
|
399
419
|
struct(:DELETE, :domain => val[3], :items => [[val[7], val[1]]])
|
400
420
|
end
|
401
421
|
.,.,
|
402
422
|
|
403
|
-
module_eval <<'.,.,', 'sdb-parser.y',
|
404
|
-
def
|
423
|
+
module_eval <<'.,.,', 'lib/sdbcli/sdb-parser.y', 91
|
424
|
+
def _reduce_24( val, _values)
|
405
425
|
[]
|
406
426
|
end
|
407
427
|
.,.,
|
408
428
|
|
409
|
-
# reduce
|
429
|
+
# reduce 25 omitted
|
410
430
|
|
411
|
-
module_eval <<'.,.,', 'sdb-parser.y',
|
412
|
-
def
|
431
|
+
module_eval <<'.,.,', 'lib/sdbcli/sdb-parser.y', 97
|
432
|
+
def _reduce_26( val, _values)
|
413
433
|
struct(:SELECT, :query => val[0])
|
414
434
|
end
|
415
435
|
.,.,
|
416
436
|
|
417
|
-
module_eval <<'.,.,', 'sdb-parser.y',
|
418
|
-
def
|
437
|
+
module_eval <<'.,.,', 'lib/sdbcli/sdb-parser.y', 102
|
438
|
+
def _reduce_27( val, _values)
|
419
439
|
struct(:CREATE, :domain => val[2])
|
420
440
|
end
|
421
441
|
.,.,
|
422
442
|
|
423
|
-
module_eval <<'.,.,', 'sdb-parser.y',
|
424
|
-
def
|
443
|
+
module_eval <<'.,.,', 'lib/sdbcli/sdb-parser.y', 107
|
444
|
+
def _reduce_28( val, _values)
|
425
445
|
struct(:DROP, :domain => val[2])
|
426
446
|
end
|
427
447
|
.,.,
|
428
448
|
|
429
|
-
module_eval <<'.,.,', 'sdb-parser.y',
|
430
|
-
def
|
449
|
+
module_eval <<'.,.,', 'lib/sdbcli/sdb-parser.y', 112
|
450
|
+
def _reduce_29( val, _values)
|
431
451
|
struct(:SHOW, :operand => :domains)
|
432
452
|
end
|
433
453
|
.,.,
|
434
454
|
|
435
|
-
module_eval <<'.,.,', 'sdb-parser.y',
|
436
|
-
def
|
455
|
+
module_eval <<'.,.,', 'lib/sdbcli/sdb-parser.y', 117
|
456
|
+
def _reduce_30( val, _values)
|
437
457
|
[val[0]]
|
438
458
|
end
|
439
459
|
.,.,
|
440
460
|
|
441
|
-
module_eval <<'.,.,', 'sdb-parser.y',
|
442
|
-
def
|
461
|
+
module_eval <<'.,.,', 'lib/sdbcli/sdb-parser.y', 121
|
462
|
+
def _reduce_31( val, _values)
|
443
463
|
val[0] + [val[2]]
|
444
464
|
end
|
445
465
|
.,.,
|
446
466
|
|
447
|
-
module_eval <<'.,.,', 'sdb-parser.y',
|
448
|
-
def
|
467
|
+
module_eval <<'.,.,', 'lib/sdbcli/sdb-parser.y', 126
|
468
|
+
def _reduce_32( val, _values)
|
449
469
|
[val[0]]
|
450
470
|
end
|
451
471
|
.,.,
|
452
472
|
|
453
|
-
module_eval <<'.,.,', 'sdb-parser.y',
|
454
|
-
def
|
473
|
+
module_eval <<'.,.,', 'lib/sdbcli/sdb-parser.y', 130
|
474
|
+
def _reduce_33( val, _values)
|
455
475
|
[val[0], val[2]].flatten
|
456
476
|
end
|
457
477
|
.,.,
|
data/lib/sdbcli/sdb-parser.y
CHANGED
@@ -26,18 +26,38 @@ rule
|
|
26
26
|
}
|
27
27
|
| identifier_list
|
28
28
|
|
29
|
-
insert_stmt : INSERT INTO IDENTIFIER '('
|
29
|
+
insert_stmt : INSERT INTO IDENTIFIER '(' insert_identifier_list ')' VALUES '(' value_list ')'
|
30
30
|
{
|
31
|
+
unless val[4].length == val[8].length
|
32
|
+
raise Racc::ParseError, 'The number of an attribute and values differs'
|
33
|
+
end
|
34
|
+
|
31
35
|
attrs = {}
|
32
36
|
val[4].zip(val[8]).each {|k, v| attrs[k] = v }
|
33
|
-
item_name = attrs.
|
37
|
+
item_name = attrs.find {|k, v| k =~ /\AitemName\Z/i }
|
38
|
+
|
39
|
+
unless item_name
|
40
|
+
raise Racc::ParseError,'itemName is not contained in the INSERT statement'
|
41
|
+
end
|
42
|
+
|
43
|
+
attrs.delete(item_name[0])
|
44
|
+
item_name = item_name[1]
|
45
|
+
|
34
46
|
struct(:INSERT, :domain => val[2], :item_name => item_name, :attrs => attrs)
|
35
47
|
}
|
36
48
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
49
|
+
|
50
|
+
insert_identifier_list : itemname_identifier
|
51
|
+
{
|
52
|
+
[val[0]]
|
53
|
+
}
|
54
|
+
| insert_identifier_list ',' itemname_identifier
|
55
|
+
{
|
56
|
+
val[0] + [val[2]]
|
57
|
+
}
|
58
|
+
|
59
|
+
itemname_identifier : ITEMNAME
|
60
|
+
| IDENTIFIER
|
41
61
|
|
42
62
|
update_stmt : UPDATE IDENTIFIER SET set_clause_list WHERE ITEMNAME '=' VALUE
|
43
63
|
{
|
metadata
CHANGED