sdbcli 1.4.7 → 1.4.8
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 +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
|