sdbcli 1.4.7 → 1.4.8
Sign up to get free protection for your applications and to get access to all the features.
- data/README +94 -3
- data/bin/sdbcli +5 -2
- data/lib/sdbcli/sdb-driver.rb +54 -1
- data/lib/sdbcli/sdb-parser.tab.rb +255 -223
- data/lib/sdbcli/sdb-parser.y +29 -1
- data/lib/sdbcli/sdb-runner.rb +3 -1
- metadata +2 -2
data/README
CHANGED
@@ -92,6 +92,9 @@ https://bitbucket.org/winebarrel/sdbcli
|
|
92
92
|
displays a present page number or displays a result of the specified page
|
93
93
|
(PAGE statement is published after SELECT statement)
|
94
94
|
|
95
|
+
TAIL domain_name
|
96
|
+
displays a end of a domain
|
97
|
+
|
95
98
|
DESC[RIBE] domain_name
|
96
99
|
displays information about the domain
|
97
100
|
|
@@ -107,7 +110,7 @@ https://bitbucket.org/winebarrel/sdbcli
|
|
107
110
|
.consistent (true|false)? displays ConsistentRead parameter or changes it
|
108
111
|
.iteratable (true|false)? displays iteratable option or changes it
|
109
112
|
all results are displayed if true
|
110
|
-
.timeout SECOND
|
113
|
+
.timeout SECOND? displays a timeout second or changes it
|
111
114
|
.version displays a version
|
112
115
|
|
113
116
|
ap-northeast-1> select * from test;
|
@@ -141,9 +144,63 @@ see http://docs.amazonwebservices.com/AmazonSimpleDB/latest/DeveloperGuide/Quoti
|
|
141
144
|
- [itemname1, {attr1: val1, attr2: val2}]
|
142
145
|
- [itemname2, {attr1: val1, attr2: val2}]
|
143
146
|
|
147
|
+
== Page transition
|
148
|
+
|
149
|
+
ap-northeast-1> select * from employees limit 3;
|
150
|
+
---
|
151
|
+
- ["100000", {birth_date: "1956-01-11", last_name: Emden, hire_date: "1991-07-02", first_name: Hiroyasu}]
|
152
|
+
- ["100001", {birth_date: "1953-02-07", last_name: Antonakopoulos, hire_date: "1994-12-25", first_name: Jasminko}]
|
153
|
+
- ["100002", {birth_date: "1957-03-04", last_name: Kolinko, hire_date: "1988-02-20", first_name: Claudi}]
|
154
|
+
# 3 rows in set
|
155
|
+
|
156
|
+
ap-northeast-1> next;
|
157
|
+
---
|
158
|
+
- ["100003", {birth_date: "1959-08-30", last_name: Trogemann, hire_date: "1987-08-26", first_name: Marsja}]
|
159
|
+
- ["100004", {birth_date: "1960-04-16", last_name: Nitsch, hire_date: "1986-01-03", first_name: Avishai}]
|
160
|
+
- ["100005", {birth_date: "1958-03-09", last_name: Foong, hire_date: "1988-10-22", first_name: Anneke}]
|
161
|
+
# 3 rows in set
|
162
|
+
|
163
|
+
ap-northeast-1> prev;
|
164
|
+
---
|
165
|
+
- ["100000", {birth_date: "1956-01-11", last_name: Emden, hire_date: "1991-07-02", first_name: Hiroyasu}]
|
166
|
+
- ["100001", {birth_date: "1953-02-07", last_name: Antonakopoulos, hire_date: "1994-12-25", first_name: Jasminko}]
|
167
|
+
- ["100002", {birth_date: "1957-03-04", last_name: Kolinko, hire_date: "1988-02-20", first_name: Claudi}]
|
168
|
+
# 3 rows in set
|
169
|
+
|
170
|
+
ap-northeast-1> page 10;
|
171
|
+
---
|
172
|
+
- ["100025", {birth_date: "1964-12-25", last_name: Braccini, hire_date: "1988-08-22", first_name: Peer}]
|
173
|
+
- ["100026", {birth_date: "1952-12-15", last_name: Demos, hire_date: "1997-10-04", first_name: Lalit}]
|
174
|
+
- ["100027", {birth_date: "1962-01-16", last_name: Coullard, hire_date: "1987-05-09", first_name: Ayakannu}]
|
175
|
+
# 3 rows in set
|
176
|
+
|
177
|
+
ap-northeast-1> page -1;
|
178
|
+
---
|
179
|
+
- ["99997", {first_name: Mack, hire_date: "1995-01-08", birth_date: "1963-04-30", last_name: Morris}]
|
180
|
+
- ["99998", {first_name: Parto, hire_date: "1995-03-03", birth_date: "1961-10-31", last_name: Lally}]
|
181
|
+
- ["99999", {first_name: Gila, hire_date: "1992-04-20", birth_date: "1959-10-09", last_name: Lammel}]
|
182
|
+
# 3 rows in set
|
183
|
+
|
184
|
+
ap-northeast-1> tail employees;
|
185
|
+
---
|
186
|
+
- ["99976", {first_name: Toshiko, hire_date: "1997-12-24", birth_date: "1964-11-18", last_name: East man}]
|
187
|
+
- ["99977", {first_name: Yurij, hire_date: "1985-06-16", birth_date: "1960-09-18", last_name: Fujisa wa}]
|
188
|
+
- ["99978", {first_name: Adamantios, hire_date: "1993-06-25", birth_date: "1956-12-25", last_name: T agansky}]
|
189
|
+
- ["99979", {first_name: Padma, hire_date: "1985-10-24", birth_date: "1957-12-09", last_name: Bage}]
|
190
|
+
...
|
191
|
+
|
192
|
+
== Extraction of all records
|
193
|
+
|
194
|
+
ap-northeast-1> .i true
|
195
|
+
ap-northeast-1> select * from employees limit 2500 ! wc -l;
|
196
|
+
--- |
|
197
|
+
300024
|
198
|
+
|
199
|
+
*Extraction of all records requires time very much.*
|
200
|
+
|
144
201
|
== Import/Export
|
145
202
|
|
146
|
-
shell> sdbcli -f json
|
203
|
+
shell> sdbcli -f json --export=employees,employees.json
|
147
204
|
// 2500 rows was outputted...
|
148
205
|
// 5000 rows was outputted...
|
149
206
|
// 7500 rows was outputted...
|
@@ -209,8 +266,23 @@ If '-' is specified as a file name, the input/output of data will become a stand
|
|
209
266
|
--- |
|
210
267
|
[["100000", {"first_name"=>"Hiroyasu", "hire_date"=>"1991-07-02", "birth_date"=>"1956-01-11", "last_name"=>"Emden"}], ["100001", {"first_name"=>"Jasminko", "hire_date"=>"1994-12-25", "birth_date"=>"1953-02-07", "last_name"=>"Antonakopoulos"}], ["100002", {"first_name"=>"Claudi", "hire_date"=>"1988-02-20", "birth_date"=>"1957-03-04", "last_name"=>"Kolinko"}]]
|
211
268
|
[1991, 1994, 1988]
|
269
|
+
|
270
|
+
ap-northeast-1> select * from employees limit 3 | hire_date.to_i.__('data.txt') {|i| i.map {|j| j * 2 } };
|
271
|
+
ap-northeast-1> ! cat data.txt;
|
272
|
+
--- |
|
273
|
+
[["100000", {"first_name"=>"Hiroyasu", "hire_date"=>"1991-07-02", "birth_date"=>"1956-01-11", "last_name"=>"Emden"}], ["100001", {"first_name"=>"Jasminko", "hire_date"=>"1994-12-25", "birth_date"=>"1953-02-07", "last_name"=>"Antonakopoulos"}], ["100002", {"first_name"=>"Claudi", "hire_date"=>"1988-02-20", "birth_date"=>"1957-03-04", "last_name"=>"Kolinko"}]]
|
274
|
+
[0, 0, 0]
|
275
|
+
[1991, 1994, 1988]
|
276
|
+
3982
|
277
|
+
3988
|
278
|
+
3976
|
279
|
+
|
280
|
+
ap-northeast-1> select * from employees limit 3 | first_name._('data.txt');
|
281
|
+
ap-northeast-1> ! cat data.txt;
|
282
|
+
--- |
|
283
|
+
["Hiroyasu", "Jasminko", "Claudi"]
|
212
284
|
|
213
|
-
== Group
|
285
|
+
== Group by (Aggregate)
|
214
286
|
|
215
287
|
ap-northeast-1> select * from access_logs limit 30;
|
216
288
|
---
|
@@ -230,6 +302,25 @@ If '-' is specified as a file name, the input/output of data will become a stand
|
|
230
302
|
host4: 302.1675
|
231
303
|
host5: 301.62
|
232
304
|
|
305
|
+
== Use variables
|
306
|
+
|
307
|
+
ap-northeast-1> select * from employees limit 3 | $list1 = self;
|
308
|
+
---
|
309
|
+
- ["100000", {first_name: Hiroyasu, hire_date: "1991-07-02", birth_date: "1956-01-11", last_name: Emden}]
|
310
|
+
- ["100001", {first_name: Jasminko, hire_date: "1994-12-25", birth_date: "1953-02-07", last_name: Antonakopoulos}]
|
311
|
+
- ["100002", {first_name: Claudi, hire_date: "1988-02-20", birth_date: "1957-03-04", last_name: Kolinko}]
|
312
|
+
# 3 rows in set
|
313
|
+
|
314
|
+
ap-northeast-1> next | $list2 = self;
|
315
|
+
---
|
316
|
+
- ["100003", {first_name: Marsja, hire_date: "1987-08-26", birth_date: "1959-08-30", last_name: Trogemann}]
|
317
|
+
- ["100004", {first_name: Avishai, hire_date: "1986-01-03", birth_date: "1960-04-16", last_name: Nitsch}]
|
318
|
+
- ["100005", {first_name: Anneke, hire_date: "1988-10-22", birth_date: "1958-03-09", last_name: Foong}]
|
319
|
+
# 3 rows in set
|
320
|
+
|
321
|
+
ap-northeast-1> | ($list1 + $list2).length;
|
322
|
+
--- 6
|
323
|
+
|
233
324
|
== Exec ruby or shell command
|
234
325
|
|
235
326
|
ap-northeast-1> | (1 + 1).to_f;
|
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.8'
|
5
5
|
HISTORY_FILE = File.join((ENV['HOME'] || ENV['USERPROFILE'] || '.'), '.sdbcli_history')
|
6
6
|
HISTSIZE = 500
|
7
7
|
SELECT_LIMIT = 2500
|
@@ -406,6 +406,9 @@ PAGE [number]
|
|
406
406
|
displays a present page number or displays a result of the specified page
|
407
407
|
(PAGE statement is published after SELECT statement)
|
408
408
|
|
409
|
+
TAIL domain_name
|
410
|
+
displays a end of a domain
|
411
|
+
|
409
412
|
DESC[RIBE] domain_name
|
410
413
|
displays information about the domain
|
411
414
|
|
@@ -421,7 +424,7 @@ USE region_or_endpoint
|
|
421
424
|
.consistent (true|false)? displays ConsistentRead parameter or changes it
|
422
425
|
.iteratable (true|false)? displays iteratable option or changes it
|
423
426
|
all results are displayed if true
|
424
|
-
.timeout SECOND
|
427
|
+
.timeout SECOND? displays a timeout second or changes it
|
425
428
|
.version displays a version
|
426
429
|
|
427
430
|
EOS
|
data/lib/sdbcli/sdb-driver.rb
CHANGED
@@ -169,8 +169,13 @@ module SimpleDB
|
|
169
169
|
return items
|
170
170
|
end
|
171
171
|
|
172
|
+
def tail(domain_name, consistent = false)
|
173
|
+
@select_expr = "SELECT * FROM #{domain_name}"
|
174
|
+
page_to(-1, consistent)
|
175
|
+
end
|
176
|
+
|
172
177
|
def page_to(page, consistent = false)
|
173
|
-
if page
|
178
|
+
if page.zero?
|
174
179
|
raise SimpleDB::Error, "Invalid page number: #{page}"
|
175
180
|
end
|
176
181
|
|
@@ -178,6 +183,12 @@ module SimpleDB
|
|
178
183
|
return []
|
179
184
|
end
|
180
185
|
|
186
|
+
if page < 0
|
187
|
+
n = page_num
|
188
|
+
return [] unless n
|
189
|
+
page = n + 1 + page
|
190
|
+
end
|
191
|
+
|
181
192
|
ss = StringScanner.new(@select_expr.dup)
|
182
193
|
limit = 100
|
183
194
|
|
@@ -188,6 +199,7 @@ module SimpleDB
|
|
188
199
|
elsif ss.scan(/"(?:[^"]|"")*"/) #"
|
189
200
|
elsif (tok = ss.scan /LIMIT\s+\d\b/i)
|
190
201
|
limit = tok.split(/\s+/).last.to_i
|
202
|
+
break
|
191
203
|
elsif ss.scan(/./)
|
192
204
|
end
|
193
205
|
end
|
@@ -273,6 +285,47 @@ module SimpleDB
|
|
273
285
|
end
|
274
286
|
end
|
275
287
|
|
288
|
+
def page_num
|
289
|
+
return nil unless @select_expr
|
290
|
+
|
291
|
+
ss = StringScanner.new(@select_expr)
|
292
|
+
domain_name = nil
|
293
|
+
|
294
|
+
until ss.eos?
|
295
|
+
if ss.scan(/[^F`'"|!]+/i) #'
|
296
|
+
elsif ss.scan(/`(?:[^`]|``)*`/)
|
297
|
+
elsif ss.scan(/'(?:[^']|'')*'/) #'
|
298
|
+
elsif ss.scan(/"(?:[^"]|"")*"/) #"
|
299
|
+
elsif (tok = ss.scan /FROM\b\s*[^\s]+/i)
|
300
|
+
domain_name = tok.split(/\b/, 2).last
|
301
|
+
break
|
302
|
+
elsif ss.scan(/./)
|
303
|
+
end
|
304
|
+
end
|
305
|
+
|
306
|
+
return nil unless domain_name
|
307
|
+
domain_name.strip!.gsub!(/`([^`]+)`/, '\1')
|
308
|
+
|
309
|
+
item_count = describe(domain_name)['ItemCount'].to_f
|
310
|
+
|
311
|
+
ss = StringScanner.new(@select_expr)
|
312
|
+
limit = 100
|
313
|
+
|
314
|
+
until ss.eos?
|
315
|
+
if ss.scan(/[^`'"L]+/i) #'
|
316
|
+
elsif ss.scan( /`(?:[^`]|``)*`/)
|
317
|
+
elsif ss.scan(/'(?:[^']|'')*'/) #'
|
318
|
+
elsif ss.scan(/"(?:[^"]|"")*"/) #"
|
319
|
+
elsif (tok = ss.scan /LIMIT\s+\d\b/i)
|
320
|
+
limit = tok.split(/\s+/).last.to_i
|
321
|
+
break
|
322
|
+
elsif ss.scan(/./)
|
323
|
+
end
|
324
|
+
end
|
325
|
+
|
326
|
+
return (item_count / limit).ceil
|
327
|
+
end
|
328
|
+
|
276
329
|
def describe(domain_name)
|
277
330
|
doc = @client.domain_metadata(domain_name)
|
278
331
|
h = {}
|
@@ -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', 372)
|
17
17
|
|
18
18
|
KEYWORDS = %w(
|
19
19
|
ADD
|
@@ -94,8 +94,10 @@ def scan
|
|
94
94
|
yield [:CURRENT, @ss.scan(/\s*[|!]\s*.*/)]
|
95
95
|
elsif (tok = @ss.scan /P(REV)?\b/i)
|
96
96
|
yield [:PREV, @ss.scan(/\s*[|!]\s*.*/)]
|
97
|
-
elsif (tok = @ss.scan /PAGE(\s
|
97
|
+
elsif (tok = @ss.scan /PAGE(\s+-?\d+)?/i)
|
98
98
|
yield [:PAGE, tok + @ss.scan(/(\s*[|!]\s*.*)?/)]
|
99
|
+
elsif (tok = @ss.scan /TAIL\b\s*[^\s]+/i)
|
100
|
+
yield [:TAIL, tok + @ss.scan(/(\s*[|!]\s*.*)?/)]
|
99
101
|
elsif (tok = @ss.scan /NULL\b/i)
|
100
102
|
yield [:NULL, nil]
|
101
103
|
elsif (tok = @ss.scan /`([^`]|``)*`/)
|
@@ -143,151 +145,153 @@ end
|
|
143
145
|
##### State transition tables begin ###
|
144
146
|
|
145
147
|
racc_action_table = [
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
148
|
+
20, 10, 81, 78, 21, 77, 43, 76, 79, 79,
|
149
|
+
41, 77, 39, 76, 22, 89, 90, 23, 89, 90,
|
150
|
+
24, 25, 26, 27, 28, 29, 64, 30, 31, 32,
|
151
|
+
33, 50, 51, 34, 35, 36, 37, 38, 89, 90,
|
152
|
+
89, 90, 109, 110, 89, 90, 114, 110, 89, 90,
|
153
|
+
85, 86, 59, 60, 89, 90, 89, 90, 71, 72,
|
154
|
+
65, 66, 69, 69, 62, 73, 57, 61, 80, 63,
|
155
|
+
82, 83, 84, 58, 87, 69, 57, 92, 93, 94,
|
156
|
+
95, 56, 97, 98, 99, 55, 101, 54, 53, 52,
|
157
|
+
49, 108, 48, 111, 43, 45, 44 ]
|
156
158
|
|
157
159
|
racc_action_check = [
|
158
|
-
0, 0,
|
159
|
-
|
160
|
-
0, 0, 0, 0, 0, 0,
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
160
|
+
0, 0, 70, 67, 0, 66, 21, 66, 70, 67,
|
161
|
+
21, 86, 1, 86, 0, 97, 97, 0, 101, 101,
|
162
|
+
0, 0, 0, 0, 0, 0, 56, 0, 0, 0,
|
163
|
+
0, 33, 33, 0, 0, 0, 0, 0, 99, 99,
|
164
|
+
98, 98, 106, 106, 94, 94, 113, 113, 80, 80,
|
165
|
+
74, 74, 45, 45, 110, 110, 111, 111, 61, 61,
|
166
|
+
57, 58, 59, 60, 48, 64, 47, 46, 69, 49,
|
167
|
+
71, 72, 73, 44, 78, 79, 42, 81, 82, 84,
|
168
|
+
85, 40, 87, 92, 93, 39, 95, 36, 35, 34,
|
169
|
+
32, 102, 29, 108, 24, 23, 22 ]
|
168
170
|
|
169
171
|
racc_action_pointer = [
|
170
172
|
-1, 12, nil, nil, nil, nil, nil, nil, nil, nil,
|
171
173
|
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
172
|
-
-1,
|
173
|
-
|
174
|
-
|
175
|
-
nil, nil, nil, nil, 19,
|
176
|
-
nil, nil,
|
177
|
-
|
178
|
-
68, nil,
|
179
|
-
|
180
|
-
|
181
|
-
nil,
|
174
|
+
nil, -1, 80, 88, 87, nil, nil, nil, nil, 65,
|
175
|
+
nil, nil, 63, -1, 82, 81, 80, nil, nil, 85,
|
176
|
+
75, nil, 62, nil, 66, 33, 61, 52, 57, 62,
|
177
|
+
nil, nil, nil, nil, nil, nil, 19, 53, 49, 55,
|
178
|
+
56, 51, nil, nil, 57, nil, -2, -5, nil, 58,
|
179
|
+
-6, 62, 62, 63, 37, nil, nil, nil, 65, 68,
|
180
|
+
45, 68, 69, nil, 69, 63, 4, 72, nil, nil,
|
181
|
+
nil, nil, 73, 74, 41, 74, nil, 12, 37, 35,
|
182
|
+
nil, 15, 77, nil, nil, nil, 29, nil, 81, nil,
|
183
|
+
51, 53, nil, 33, nil ]
|
182
184
|
|
183
185
|
racc_action_default = [
|
184
|
-
-
|
186
|
+
-69, -69, -1, -2, -3, -4, -5, -6, -7, -8,
|
185
187
|
-9, -10, -11, -12, -13, -14, -15, -16, -17, -18,
|
186
|
-
-
|
187
|
-
-
|
188
|
-
-
|
189
|
-
-58, -59, -60,
|
190
|
-
-
|
191
|
-
-
|
192
|
-
-
|
193
|
-
-
|
194
|
-
-
|
195
|
-
-
|
188
|
+
-19, -23, -69, -69, -48, -50, -51, -52, -53, -69,
|
189
|
+
-55, -56, -69, -69, -69, -69, -69, -63, -64, -69,
|
190
|
+
-69, -24, -25, -65, -69, -69, -69, -49, -69, -69,
|
191
|
+
-58, -59, -60, -61, -62, 115, -69, -69, -69, -69,
|
192
|
+
-69, -69, -54, -57, -69, -66, -69, -34, -41, -69,
|
193
|
+
-38, -45, -46, -69, -69, -29, -31, -32, -35, -69,
|
194
|
+
-69, -39, -69, -47, -69, -69, -69, -36, -42, -20,
|
195
|
+
-21, -43, -40, -69, -69, -69, -30, -69, -69, -69,
|
196
|
+
-22, -69, -28, -33, -37, -44, -69, -67, -69, -26,
|
197
|
+
-69, -69, -68, -69, -27 ]
|
196
198
|
|
197
199
|
racc_goto_table = [
|
198
|
-
|
199
|
-
9, 11,
|
200
|
-
|
201
|
-
|
200
|
+
91, 75, 106, 42, 67, 70, 47, 16, 7, 8,
|
201
|
+
9, 11, 113, 12, 100, 13, 14, 103, 104, 105,
|
202
|
+
15, 96, 6, 17, 18, 19, 1, 40, 5, 102,
|
203
|
+
112, 4, 74, 3, 2, 88, 46 ]
|
202
204
|
|
203
205
|
racc_goto_check = [
|
204
|
-
|
205
|
-
9, 10,
|
206
|
-
|
207
|
-
|
206
|
+
19, 25, 23, 21, 26, 26, 21, 15, 7, 8,
|
207
|
+
9, 10, 23, 11, 19, 12, 13, 19, 19, 19,
|
208
|
+
14, 25, 6, 16, 17, 18, 1, 20, 5, 22,
|
209
|
+
19, 4, 24, 3, 2, 27, 28 ]
|
208
210
|
|
209
211
|
racc_goto_pointer = [
|
210
|
-
nil,
|
211
|
-
11, 13, 15, 16, 7,
|
212
|
-
-
|
212
|
+
nil, 26, 34, 33, 31, 28, 22, 8, 9, 10,
|
213
|
+
11, 13, 15, 16, 20, 7, 23, 24, 25, -80,
|
214
|
+
6, -18, -66, -99, -34, -65, -55, -44, 12 ]
|
213
215
|
|
214
216
|
racc_goto_default = [
|
215
217
|
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
216
|
-
nil, nil, nil, nil, nil, nil, nil, nil,
|
217
|
-
nil, nil, nil, nil, nil, nil,
|
218
|
+
nil, nil, nil, nil, nil, nil, nil, nil, nil, 107,
|
219
|
+
nil, nil, nil, nil, nil, nil, nil, 68, nil ]
|
218
220
|
|
219
221
|
racc_reduce_table = [
|
220
222
|
0, 0, :racc_error,
|
221
|
-
1,
|
222
|
-
1,
|
223
|
-
1,
|
224
|
-
1,
|
225
|
-
1,
|
226
|
-
1,
|
227
|
-
1,
|
228
|
-
1,
|
229
|
-
1,
|
230
|
-
1,
|
231
|
-
1,
|
232
|
-
1,
|
233
|
-
1,
|
234
|
-
1,
|
235
|
-
1,
|
236
|
-
1,
|
237
|
-
1,
|
238
|
-
1,
|
239
|
-
1,
|
240
|
-
1,
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
1,
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
1,
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
3,
|
263
|
-
|
264
|
-
|
265
|
-
4,
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
1,
|
223
|
+
1, 40, :_reduce_none,
|
224
|
+
1, 40, :_reduce_none,
|
225
|
+
1, 40, :_reduce_none,
|
226
|
+
1, 40, :_reduce_none,
|
227
|
+
1, 40, :_reduce_none,
|
228
|
+
1, 40, :_reduce_none,
|
229
|
+
1, 40, :_reduce_none,
|
230
|
+
1, 40, :_reduce_none,
|
231
|
+
1, 40, :_reduce_none,
|
232
|
+
1, 40, :_reduce_none,
|
233
|
+
1, 40, :_reduce_none,
|
234
|
+
1, 40, :_reduce_none,
|
235
|
+
1, 40, :_reduce_none,
|
236
|
+
1, 40, :_reduce_none,
|
237
|
+
1, 40, :_reduce_none,
|
238
|
+
1, 40, :_reduce_none,
|
239
|
+
1, 40, :_reduce_none,
|
240
|
+
1, 40, :_reduce_none,
|
241
|
+
1, 40, :_reduce_19,
|
242
|
+
1, 58, :_reduce_none,
|
243
|
+
1, 58, :_reduce_none,
|
244
|
+
8, 41, :_reduce_22,
|
245
|
+
0, 59, :_reduce_23,
|
246
|
+
1, 59, :_reduce_24,
|
247
|
+
1, 59, :_reduce_none,
|
248
|
+
3, 61, :_reduce_26,
|
249
|
+
5, 61, :_reduce_27,
|
250
|
+
8, 42, :_reduce_28,
|
251
|
+
1, 63, :_reduce_29,
|
252
|
+
3, 63, :_reduce_30,
|
253
|
+
1, 64, :_reduce_none,
|
254
|
+
1, 64, :_reduce_none,
|
255
|
+
8, 43, :_reduce_33,
|
256
|
+
4, 43, :_reduce_34,
|
257
|
+
5, 43, :_reduce_35,
|
258
|
+
6, 43, :_reduce_36,
|
259
|
+
8, 44, :_reduce_37,
|
260
|
+
4, 44, :_reduce_38,
|
261
|
+
5, 44, :_reduce_39,
|
262
|
+
6, 44, :_reduce_40,
|
263
|
+
1, 65, :_reduce_41,
|
264
|
+
3, 65, :_reduce_42,
|
265
|
+
3, 66, :_reduce_43,
|
266
|
+
8, 45, :_reduce_44,
|
267
|
+
4, 45, :_reduce_45,
|
268
|
+
4, 45, :_reduce_46,
|
269
|
+
5, 45, :_reduce_47,
|
270
|
+
0, 67, :_reduce_48,
|
271
|
+
1, 67, :_reduce_none,
|
270
272
|
1, 46, :_reduce_50,
|
271
273
|
1, 47, :_reduce_51,
|
272
|
-
1,
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
274
|
+
1, 48, :_reduce_52,
|
275
|
+
1, 47, :_reduce_53,
|
276
|
+
3, 50, :_reduce_54,
|
277
|
+
1, 49, :_reduce_55,
|
278
|
+
1, 57, :_reduce_56,
|
279
|
+
3, 51, :_reduce_57,
|
278
280
|
2, 52, :_reduce_58,
|
279
|
-
2,
|
281
|
+
2, 52, :_reduce_59,
|
280
282
|
2, 53, :_reduce_60,
|
281
|
-
|
282
|
-
|
283
|
-
1,
|
284
|
-
|
283
|
+
2, 54, :_reduce_61,
|
284
|
+
2, 54, :_reduce_62,
|
285
|
+
1, 55, :_reduce_63,
|
286
|
+
1, 56, :_reduce_64,
|
285
287
|
1, 60, :_reduce_65,
|
286
|
-
3, 60, :_reduce_66
|
288
|
+
3, 60, :_reduce_66,
|
289
|
+
1, 62, :_reduce_67,
|
290
|
+
3, 62, :_reduce_68 ]
|
287
291
|
|
288
|
-
racc_reduce_n =
|
292
|
+
racc_reduce_n = 69
|
289
293
|
|
290
|
-
racc_shift_n =
|
294
|
+
racc_shift_n = 115
|
291
295
|
|
292
296
|
racc_token_table = {
|
293
297
|
false => 0,
|
@@ -319,17 +323,18 @@ racc_token_table = {
|
|
319
323
|
:CREATE => 26,
|
320
324
|
:DOMAIN => 27,
|
321
325
|
:PAGE => 28,
|
322
|
-
:
|
323
|
-
:
|
324
|
-
:
|
325
|
-
:
|
326
|
-
:
|
327
|
-
:
|
328
|
-
:
|
329
|
-
:
|
330
|
-
:
|
331
|
-
|
332
|
-
|
326
|
+
:TAIL => 29,
|
327
|
+
:DROP => 30,
|
328
|
+
:SHOW => 31,
|
329
|
+
:DOMAINS => 32,
|
330
|
+
:REGIONS => 33,
|
331
|
+
:USE => 34,
|
332
|
+
:DESC => 35,
|
333
|
+
:DESCRIBE => 36,
|
334
|
+
:RUBY => 37,
|
335
|
+
:EXEC => 38 }
|
336
|
+
|
337
|
+
racc_nt_base = 39
|
333
338
|
|
334
339
|
racc_use_result_var = false
|
335
340
|
|
@@ -379,6 +384,7 @@ Racc_token_to_s_table = [
|
|
379
384
|
"CREATE",
|
380
385
|
"DOMAIN",
|
381
386
|
"PAGE",
|
387
|
+
"TAIL",
|
382
388
|
"DROP",
|
383
389
|
"SHOW",
|
384
390
|
"DOMAINS",
|
@@ -406,6 +412,7 @@ Racc_token_to_s_table = [
|
|
406
412
|
"desc_stmt",
|
407
413
|
"ruby_stmt",
|
408
414
|
"exec_stmt",
|
415
|
+
"tail_stmt",
|
409
416
|
"value",
|
410
417
|
"get_output_list",
|
411
418
|
"identifier_list",
|
@@ -457,56 +464,58 @@ Racc_debug_parser = false
|
|
457
464
|
|
458
465
|
# reduce 17 omitted
|
459
466
|
|
460
|
-
|
461
|
-
|
467
|
+
# reduce 18 omitted
|
468
|
+
|
469
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 23)
|
470
|
+
def _reduce_19(val, _values)
|
462
471
|
@stmt_with_expr
|
463
472
|
|
464
473
|
end
|
465
474
|
.,.,
|
466
475
|
|
467
|
-
# reduce 19 omitted
|
468
|
-
|
469
476
|
# reduce 20 omitted
|
470
477
|
|
471
|
-
|
472
|
-
|
478
|
+
# reduce 21 omitted
|
479
|
+
|
480
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 31)
|
481
|
+
def _reduce_22(val, _values)
|
473
482
|
struct(:GET, :domain => val[3], :item_name => val[7], :attr_names => val[1])
|
474
483
|
|
475
484
|
end
|
476
485
|
.,.,
|
477
486
|
|
478
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
479
|
-
def
|
487
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 36)
|
488
|
+
def _reduce_23(val, _values)
|
480
489
|
[]
|
481
490
|
|
482
491
|
end
|
483
492
|
.,.,
|
484
493
|
|
485
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
486
|
-
def
|
494
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 40)
|
495
|
+
def _reduce_24(val, _values)
|
487
496
|
[]
|
488
497
|
|
489
498
|
end
|
490
499
|
.,.,
|
491
500
|
|
492
|
-
# reduce
|
501
|
+
# reduce 25 omitted
|
493
502
|
|
494
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
495
|
-
def
|
503
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 46)
|
504
|
+
def _reduce_26(val, _values)
|
496
505
|
[val[1]]
|
497
506
|
|
498
507
|
end
|
499
508
|
.,.,
|
500
509
|
|
501
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
502
|
-
def
|
510
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 50)
|
511
|
+
def _reduce_27(val, _values)
|
503
512
|
val[0] + [val[3]]
|
504
513
|
|
505
514
|
end
|
506
515
|
.,.,
|
507
516
|
|
508
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
509
|
-
def
|
517
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 55)
|
518
|
+
def _reduce_28(val, _values)
|
510
519
|
items = val[7].map do |vals|
|
511
520
|
unless val[4].length == vals.length
|
512
521
|
raise Racc::ParseError, 'The number of an attribute and values differs'
|
@@ -531,26 +540,26 @@ module_eval(<<'.,.,', 'sdb-parser.y', 54)
|
|
531
540
|
end
|
532
541
|
.,.,
|
533
542
|
|
534
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
535
|
-
def
|
543
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 79)
|
544
|
+
def _reduce_29(val, _values)
|
536
545
|
[val[0]]
|
537
546
|
|
538
547
|
end
|
539
548
|
.,.,
|
540
549
|
|
541
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
542
|
-
def
|
550
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 83)
|
551
|
+
def _reduce_30(val, _values)
|
543
552
|
val[0] + [val[2]]
|
544
553
|
|
545
554
|
end
|
546
555
|
.,.,
|
547
556
|
|
548
|
-
# reduce 30 omitted
|
549
|
-
|
550
557
|
# reduce 31 omitted
|
551
558
|
|
552
|
-
|
553
|
-
|
559
|
+
# reduce 32 omitted
|
560
|
+
|
561
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 91)
|
562
|
+
def _reduce_33(val, _values)
|
554
563
|
attrs = {}
|
555
564
|
val[3].each {|k, v| attrs[k] = v }
|
556
565
|
struct(:UPDATE, :domain => val[1], :items => [[val[7], attrs]])
|
@@ -558,8 +567,8 @@ module_eval(<<'.,.,', 'sdb-parser.y', 90)
|
|
558
567
|
end
|
559
568
|
.,.,
|
560
569
|
|
561
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
562
|
-
def
|
570
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 97)
|
571
|
+
def _reduce_34(val, _values)
|
563
572
|
attrs = {}
|
564
573
|
val[3].each {|k, v| attrs[k] = v }
|
565
574
|
@stmt_with_expr = struct(:UPDATE_WITH_EXPR, :domain => val[1], :attrs => attrs, :expr => '')
|
@@ -567,8 +576,8 @@ module_eval(<<'.,.,', 'sdb-parser.y', 96)
|
|
567
576
|
end
|
568
577
|
.,.,
|
569
578
|
|
570
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
571
|
-
def
|
579
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 103)
|
580
|
+
def _reduce_35(val, _values)
|
572
581
|
attrs = {}
|
573
582
|
val[3].each {|k, v| attrs[k] = v }
|
574
583
|
@stmt_with_expr = struct(:UPDATE_WITH_EXPR, :domain => val[1], :attrs => attrs, :expr => 'WHERE ')
|
@@ -576,8 +585,8 @@ module_eval(<<'.,.,', 'sdb-parser.y', 102)
|
|
576
585
|
end
|
577
586
|
.,.,
|
578
587
|
|
579
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
580
|
-
def
|
588
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 109)
|
589
|
+
def _reduce_36(val, _values)
|
581
590
|
attrs = {}
|
582
591
|
val[3].each {|k, v| attrs[k] = v }
|
583
592
|
@stmt_with_expr = struct(:UPDATE_WITH_EXPR, :domain => val[1], :attrs => attrs, :expr => 'WHERE itemName')
|
@@ -585,8 +594,8 @@ module_eval(<<'.,.,', 'sdb-parser.y', 108)
|
|
585
594
|
end
|
586
595
|
.,.,
|
587
596
|
|
588
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
589
|
-
def
|
597
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 116)
|
598
|
+
def _reduce_37(val, _values)
|
590
599
|
attrs = {}
|
591
600
|
val[3].each {|k, v| attrs[k] = v }
|
592
601
|
struct(:MERGE, :domain => val[1], :items => [[val[7], attrs]])
|
@@ -594,8 +603,8 @@ module_eval(<<'.,.,', 'sdb-parser.y', 115)
|
|
594
603
|
end
|
595
604
|
.,.,
|
596
605
|
|
597
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
598
|
-
def
|
606
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 122)
|
607
|
+
def _reduce_38(val, _values)
|
599
608
|
attrs = {}
|
600
609
|
val[3].each {|k, v| attrs[k] = v }
|
601
610
|
@stmt_with_expr = struct(:MERGE_WITH_EXPR, :domain => val[1], :attrs => attrs, :expr => '')
|
@@ -603,8 +612,8 @@ module_eval(<<'.,.,', 'sdb-parser.y', 121)
|
|
603
612
|
end
|
604
613
|
.,.,
|
605
614
|
|
606
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
607
|
-
def
|
615
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 128)
|
616
|
+
def _reduce_39(val, _values)
|
608
617
|
attrs = {}
|
609
618
|
val[3].each {|k, v| attrs[k] = v }
|
610
619
|
@stmt_with_expr = struct(:MERGE_WITH_EXPR, :domain => val[1], :attrs => attrs, :expr => 'WHERE ')
|
@@ -612,8 +621,8 @@ module_eval(<<'.,.,', 'sdb-parser.y', 127)
|
|
612
621
|
end
|
613
622
|
.,.,
|
614
623
|
|
615
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
616
|
-
def
|
624
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 134)
|
625
|
+
def _reduce_40(val, _values)
|
617
626
|
attrs = {}
|
618
627
|
val[3].each {|k, v| attrs[k] = v }
|
619
628
|
@stmt_with_expr = struct(:MERGE_WITH_EXPR, :domain => val[1], :attrs => attrs, :expr => 'WHERE itemName')
|
@@ -621,69 +630,69 @@ module_eval(<<'.,.,', 'sdb-parser.y', 133)
|
|
621
630
|
end
|
622
631
|
.,.,
|
623
632
|
|
624
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
625
|
-
def
|
633
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 141)
|
634
|
+
def _reduce_41(val, _values)
|
626
635
|
[val[0]]
|
627
636
|
|
628
637
|
end
|
629
638
|
.,.,
|
630
639
|
|
631
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
632
|
-
def
|
640
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 145)
|
641
|
+
def _reduce_42(val, _values)
|
633
642
|
val[0] + [val[2]]
|
634
643
|
|
635
644
|
end
|
636
645
|
.,.,
|
637
646
|
|
638
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
639
|
-
def
|
647
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 150)
|
648
|
+
def _reduce_43(val, _values)
|
640
649
|
[val[0], val[2]]
|
641
650
|
|
642
651
|
end
|
643
652
|
.,.,
|
644
653
|
|
645
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
646
|
-
def
|
654
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 155)
|
655
|
+
def _reduce_44(val, _values)
|
647
656
|
struct(:DELETE, :domain => val[3], :items => [[val[7], val[1]]])
|
648
657
|
|
649
658
|
end
|
650
659
|
.,.,
|
651
660
|
|
652
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
653
|
-
def
|
661
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 159)
|
662
|
+
def _reduce_45(val, _values)
|
654
663
|
@stmt_with_expr = struct(:DELETE_WITH_EXPR, :domain => val[3], :attrs => val[1], :expr => '')
|
655
664
|
|
656
665
|
end
|
657
666
|
.,.,
|
658
667
|
|
659
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
660
|
-
def
|
668
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 163)
|
669
|
+
def _reduce_46(val, _values)
|
661
670
|
@stmt_with_expr = struct(:DELETE_WITH_EXPR, :domain => val[3], :attrs => val[1], :expr => 'WHERE ')
|
662
671
|
|
663
672
|
end
|
664
673
|
.,.,
|
665
674
|
|
666
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
667
|
-
def
|
675
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 167)
|
676
|
+
def _reduce_47(val, _values)
|
668
677
|
@stmt_with_expr = struct(:DELETE_WITH_EXPR, :domain => val[3], :attrs => val[1], :expr => 'WHERE itemName')
|
669
678
|
|
670
679
|
end
|
671
680
|
.,.,
|
672
681
|
|
673
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
674
|
-
def
|
682
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 172)
|
683
|
+
def _reduce_48(val, _values)
|
675
684
|
[]
|
676
685
|
|
677
686
|
end
|
678
687
|
.,.,
|
679
688
|
|
680
|
-
# reduce
|
689
|
+
# reduce 49 omitted
|
681
690
|
|
682
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
683
|
-
def
|
691
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 178)
|
692
|
+
def _reduce_50(val, _values)
|
684
693
|
query = ''
|
685
694
|
script = nil
|
686
|
-
|
695
|
+
script_type = nil
|
687
696
|
|
688
697
|
ss = StringScanner.new(val[0])
|
689
698
|
|
@@ -712,8 +721,8 @@ module_eval(<<'.,.,', 'sdb-parser.y', 177)
|
|
712
721
|
end
|
713
722
|
.,.,
|
714
723
|
|
715
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
716
|
-
def
|
724
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 209)
|
725
|
+
def _reduce_51(val, _values)
|
717
726
|
script = nil
|
718
727
|
script_type = nil
|
719
728
|
|
@@ -731,8 +740,8 @@ module_eval(<<'.,.,', 'sdb-parser.y', 208)
|
|
731
740
|
end
|
732
741
|
.,.,
|
733
742
|
|
734
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
735
|
-
def
|
743
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 226)
|
744
|
+
def _reduce_52(val, _values)
|
736
745
|
script = nil
|
737
746
|
script_type = nil
|
738
747
|
|
@@ -750,8 +759,8 @@ module_eval(<<'.,.,', 'sdb-parser.y', 225)
|
|
750
759
|
end
|
751
760
|
.,.,
|
752
761
|
|
753
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
754
|
-
def
|
762
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 243)
|
763
|
+
def _reduce_53(val, _values)
|
755
764
|
script = nil
|
756
765
|
script_type = nil
|
757
766
|
|
@@ -769,15 +778,15 @@ module_eval(<<'.,.,', 'sdb-parser.y', 242)
|
|
769
778
|
end
|
770
779
|
.,.,
|
771
780
|
|
772
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
773
|
-
def
|
781
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 260)
|
782
|
+
def _reduce_54(val, _values)
|
774
783
|
struct(:CREATE, :domain => val[2])
|
775
784
|
|
776
785
|
end
|
777
786
|
.,.,
|
778
787
|
|
779
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
780
|
-
def
|
788
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 265)
|
789
|
+
def _reduce_55(val, _values)
|
781
790
|
page = nil
|
782
791
|
script = nil
|
783
792
|
script_type = nil
|
@@ -800,87 +809,110 @@ module_eval(<<'.,.,', 'sdb-parser.y', 264)
|
|
800
809
|
end
|
801
810
|
.,.,
|
802
811
|
|
803
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
804
|
-
def
|
812
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 287)
|
813
|
+
def _reduce_56(val, _values)
|
814
|
+
domain_name = nil
|
815
|
+
script = nil
|
816
|
+
script_type = nil
|
817
|
+
|
818
|
+
case val[0]
|
819
|
+
when /\s*\|\s*/
|
820
|
+
domain_name, script = val[0].split(/\s*\|\s*/, 2)
|
821
|
+
script_type = :ruby
|
822
|
+
when /\s*!\s*/
|
823
|
+
domain_name, script = val[0].split(/\s*\!\s*/, 2)
|
824
|
+
script_type = :shell
|
825
|
+
else
|
826
|
+
domain_name = val[0]
|
827
|
+
end
|
828
|
+
|
829
|
+
domain_name = domain_name.split(/\b/, 2).last.strip
|
830
|
+
struct(:TAIL, :domain => domain_name, :script => script, :script_type => script_type)
|
831
|
+
|
832
|
+
end
|
833
|
+
.,.,
|
834
|
+
|
835
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 308)
|
836
|
+
def _reduce_57(val, _values)
|
805
837
|
struct(:DROP, :domain => val[2])
|
806
838
|
|
807
839
|
end
|
808
840
|
.,.,
|
809
841
|
|
810
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
811
|
-
def
|
842
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 313)
|
843
|
+
def _reduce_58(val, _values)
|
812
844
|
struct(:SHOW, :operand => :domains)
|
813
845
|
|
814
846
|
end
|
815
847
|
.,.,
|
816
848
|
|
817
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
818
|
-
def
|
849
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 317)
|
850
|
+
def _reduce_59(val, _values)
|
819
851
|
struct(:SHOW, :operand => :regions)
|
820
852
|
|
821
853
|
end
|
822
854
|
.,.,
|
823
855
|
|
824
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
825
|
-
def
|
856
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 322)
|
857
|
+
def _reduce_60(val, _values)
|
826
858
|
struct(:USE, :endpoint => val[1])
|
827
859
|
|
828
860
|
end
|
829
861
|
.,.,
|
830
862
|
|
831
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
832
|
-
def
|
863
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 327)
|
864
|
+
def _reduce_61(val, _values)
|
833
865
|
struct(:DESCRIBE, :domain => val[1])
|
834
866
|
|
835
867
|
end
|
836
868
|
.,.,
|
837
869
|
|
838
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
839
|
-
def
|
870
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 331)
|
871
|
+
def _reduce_62(val, _values)
|
840
872
|
struct(:DESCRIBE, :domain => val[1])
|
841
873
|
|
842
874
|
end
|
843
875
|
.,.,
|
844
876
|
|
845
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
846
|
-
def
|
877
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 336)
|
878
|
+
def _reduce_63(val, _values)
|
847
879
|
script = val[0].sub(/\A\s*\|\s*/, '')
|
848
880
|
struct(:RUBY, :script => script)
|
849
881
|
|
850
882
|
end
|
851
883
|
.,.,
|
852
884
|
|
853
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
854
|
-
def
|
885
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 342)
|
886
|
+
def _reduce_64(val, _values)
|
855
887
|
script = val[0].sub(/\A\s*!\s*/, '')
|
856
888
|
struct(:EXEC, :script => script)
|
857
889
|
|
858
890
|
end
|
859
891
|
.,.,
|
860
892
|
|
861
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
862
|
-
def
|
893
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 348)
|
894
|
+
def _reduce_65(val, _values)
|
863
895
|
[val[0]]
|
864
896
|
|
865
897
|
end
|
866
898
|
.,.,
|
867
899
|
|
868
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
869
|
-
def
|
900
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 352)
|
901
|
+
def _reduce_66(val, _values)
|
870
902
|
val[0] + [val[2]]
|
871
903
|
|
872
904
|
end
|
873
905
|
.,.,
|
874
906
|
|
875
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
876
|
-
def
|
907
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 357)
|
908
|
+
def _reduce_67(val, _values)
|
877
909
|
[val[0]]
|
878
910
|
|
879
911
|
end
|
880
912
|
.,.,
|
881
913
|
|
882
|
-
module_eval(<<'.,.,', 'sdb-parser.y',
|
883
|
-
def
|
914
|
+
module_eval(<<'.,.,', 'sdb-parser.y', 361)
|
915
|
+
def _reduce_68(val, _values)
|
884
916
|
[val[0], val[2]].flatten
|
885
917
|
|
886
918
|
end
|
data/lib/sdbcli/sdb-parser.y
CHANGED
@@ -18,6 +18,7 @@ rule
|
|
18
18
|
| desc_stmt
|
19
19
|
| ruby_stmt
|
20
20
|
| exec_stmt
|
21
|
+
| tail_stmt
|
21
22
|
| error
|
22
23
|
{
|
23
24
|
@stmt_with_expr
|
@@ -282,6 +283,27 @@ rule
|
|
282
283
|
struct(:PAGE, :page => page, :script => script, :script_type => script_type)
|
283
284
|
}
|
284
285
|
|
286
|
+
tail_stmt : TAIL
|
287
|
+
{
|
288
|
+
domain_name = nil
|
289
|
+
script = nil
|
290
|
+
script_type = nil
|
291
|
+
|
292
|
+
case val[0]
|
293
|
+
when /\s*\|\s*/
|
294
|
+
domain_name, script = val[0].split(/\s*\|\s*/, 2)
|
295
|
+
script_type = :ruby
|
296
|
+
when /\s*!\s*/
|
297
|
+
domain_name, script = val[0].split(/\s*\!\s*/, 2)
|
298
|
+
script_type = :shell
|
299
|
+
else
|
300
|
+
domain_name = val[0]
|
301
|
+
end
|
302
|
+
|
303
|
+
domain_name = domain_name.split(/\b/, 2).last.strip
|
304
|
+
struct(:TAIL, :domain => domain_name, :script => script, :script_type => script_type)
|
305
|
+
}
|
306
|
+
|
285
307
|
drop_stmt : DROP DOMAIN IDENTIFIER
|
286
308
|
{
|
287
309
|
struct(:DROP, :domain => val[2])
|
@@ -295,10 +317,12 @@ rule
|
|
295
317
|
{
|
296
318
|
struct(:SHOW, :operand => :regions)
|
297
319
|
}
|
320
|
+
|
298
321
|
use_stmt : USE IDENTIFIER
|
299
322
|
{
|
300
323
|
struct(:USE, :endpoint => val[1])
|
301
324
|
}
|
325
|
+
|
302
326
|
desc_stmt : DESC IDENTIFIER
|
303
327
|
{
|
304
328
|
struct(:DESCRIBE, :domain => val[1])
|
@@ -307,11 +331,13 @@ rule
|
|
307
331
|
{
|
308
332
|
struct(:DESCRIBE, :domain => val[1])
|
309
333
|
}
|
334
|
+
|
310
335
|
ruby_stmt : RUBY
|
311
336
|
{
|
312
337
|
script = val[0].sub(/\A\s*\|\s*/, '')
|
313
338
|
struct(:RUBY, :script => script)
|
314
339
|
}
|
340
|
+
|
315
341
|
exec_stmt : EXEC
|
316
342
|
{
|
317
343
|
script = val[0].sub(/\A\s*!\s*/, '')
|
@@ -423,8 +449,10 @@ def scan
|
|
423
449
|
yield [:CURRENT, @ss.scan(/\s*[|!]\s*.*/)]
|
424
450
|
elsif (tok = @ss.scan /P(REV)?\b/i)
|
425
451
|
yield [:PREV, @ss.scan(/\s*[|!]\s*.*/)]
|
426
|
-
elsif (tok = @ss.scan /PAGE(\s
|
452
|
+
elsif (tok = @ss.scan /PAGE(\s+-?\d+)?/i)
|
427
453
|
yield [:PAGE, tok + @ss.scan(/(\s*[|!]\s*.*)?/)]
|
454
|
+
elsif (tok = @ss.scan /TAIL\b\s*[^\s]+/i)
|
455
|
+
yield [:TAIL, tok + @ss.scan(/(\s*[|!]\s*.*)?/)]
|
428
456
|
elsif (tok = @ss.scan /NULL\b/i)
|
429
457
|
yield [:NULL, nil]
|
430
458
|
elsif (tok = @ss.scan /`([^`]|``)*`/)
|
data/lib/sdbcli/sdb-runner.rb
CHANGED
@@ -246,7 +246,7 @@ module SimpleDB
|
|
246
246
|
rownum = items.length
|
247
247
|
@driver.delete(parsed.domain, items)
|
248
248
|
Rownum.new(rownum)
|
249
|
-
when :SELECT, :NEXT, :CURRENT, :PREV, :PAGE
|
249
|
+
when :SELECT, :NEXT, :CURRENT, :PREV, :PAGE, :TAIL
|
250
250
|
items = case command
|
251
251
|
when :SELECT
|
252
252
|
@driver.select(parsed.query, consistent, true)
|
@@ -258,6 +258,8 @@ module SimpleDB
|
|
258
258
|
@driver.prev_list(consistent)
|
259
259
|
when :PAGE
|
260
260
|
parsed.page ? @driver.page_to(parsed.page, consistent) : @driver.current_page
|
261
|
+
when :TAIL
|
262
|
+
@driver.tail(parsed.domain, consistent)
|
261
263
|
else
|
262
264
|
raise 'must not happen'
|
263
265
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sdbcli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-02-
|
12
|
+
date: 2013-02-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|