ddbcli 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/ddbcli +1 -1
- data/lib/ddbcli/cli/functions.rb +7 -2
- data/lib/ddbcli/ddb-driver.rb +31 -7
- data/lib/ddbcli/ddb-parser.tab.rb +1 -1
- data/lib/ddbcli/ddb-parser.y +2 -2
- metadata +2 -2
data/bin/ddbcli
CHANGED
data/lib/ddbcli/cli/functions.rb
CHANGED
@@ -46,8 +46,13 @@ def print_json(data, opts = {})
|
|
46
46
|
|
47
47
|
str.sub!(/(?:\r\n|\r|\n)*\Z/, "\n")
|
48
48
|
|
49
|
-
if opts[:show_rows]
|
50
|
-
|
49
|
+
if opts[:show_rows]
|
50
|
+
if [Array, Hash].any? {|i| data.kind_of?(i) }
|
51
|
+
str << "// #{data.length} #{data.length > 1 ? 'rows' : 'row'} in set"
|
52
|
+
else
|
53
|
+
str << '// 1 row in set'
|
54
|
+
end
|
55
|
+
|
51
56
|
str << " (%.2f sec)" % opts[:time] if opts[:time]
|
52
57
|
str << "\n"
|
53
58
|
end
|
data/lib/ddbcli/ddb-driver.rb
CHANGED
@@ -193,7 +193,10 @@ module DynamoDB
|
|
193
193
|
|
194
194
|
table_names.map do |table_name|
|
195
195
|
table_info = @client.query('DescribeTable', 'TableName' => table_name)['Table']
|
196
|
-
h[table_name] =
|
196
|
+
h[table_name] = {
|
197
|
+
'TableStatus' => table_info['TableStatus'],
|
198
|
+
'ItemCount' => table_info['ItemCount'],
|
199
|
+
}
|
197
200
|
end
|
198
201
|
|
199
202
|
return h
|
@@ -479,17 +482,27 @@ module DynamoDB
|
|
479
482
|
end
|
480
483
|
else
|
481
484
|
retval = block_given? ? res_data['Items'].map {|i| yield(i) } : res_data['Items']
|
485
|
+
limit_orig = parsed.limit
|
486
|
+
|
487
|
+
if @iteratable or opts[:iteratable] or (parsed.limit and retval.length < parsed.limit)
|
488
|
+
parsed.limit -= retval.length if parsed.limit
|
482
489
|
|
483
|
-
if (@iteratable or opts[:iteratable]) and not parsed.limit
|
484
490
|
while res_data['LastEvaluatedKey']
|
485
491
|
res_data = select_proc.call(res_data['LastEvaluatedKey'])
|
486
|
-
|
487
|
-
|
488
|
-
)
|
492
|
+
items = block_given? ? res_data['Items'].map {|i| yield(i) } : res_data['Items']
|
493
|
+
|
494
|
+
retval.concat(items)
|
495
|
+
|
496
|
+
if parsed.limit
|
497
|
+
parsed.limit -= items.length
|
498
|
+
break if parsed.limit < 1
|
499
|
+
end
|
489
500
|
end
|
490
501
|
end
|
491
502
|
end
|
492
503
|
|
504
|
+
parsed.limit = limit_orig;
|
505
|
+
|
493
506
|
if res_data['LastEvaluatedKey']
|
494
507
|
@last_action = action
|
495
508
|
@last_parsed = parsed
|
@@ -667,7 +680,9 @@ module DynamoDB
|
|
667
680
|
end # scan filter
|
668
681
|
|
669
682
|
res_data = @client.query('Scan', req_hash)
|
670
|
-
|
683
|
+
res_data_items = res_data['Items']
|
684
|
+
parsed.limit -= res_data_items.length if parsed.limit
|
685
|
+
items.concat(res_data_items)
|
671
686
|
res_data['LastEvaluatedKey']
|
672
687
|
end
|
673
688
|
|
@@ -675,7 +690,10 @@ module DynamoDB
|
|
675
690
|
|
676
691
|
loop do
|
677
692
|
lek = scan.call(lek)
|
678
|
-
|
693
|
+
|
694
|
+
if not lek or (parsed.limit and parsed.limit < 1)
|
695
|
+
break
|
696
|
+
end
|
679
697
|
end
|
680
698
|
|
681
699
|
return items
|
@@ -761,7 +779,13 @@ module DynamoDB
|
|
761
779
|
end
|
762
780
|
|
763
781
|
def do_insert_select(action, parsed)
|
782
|
+
if parsed.count
|
783
|
+
raise DynamoDB::Error, '"COUNT(*)" cannot be inserted.'
|
784
|
+
end
|
785
|
+
|
764
786
|
items = do_select0(action, parsed.select, :iteratable => true)
|
787
|
+
items = items.data if items.kind_of?(Iteratorable)
|
788
|
+
|
765
789
|
n = 0
|
766
790
|
|
767
791
|
until (chunk = items.slice!(0, MAX_NUMBER_BATCH_PROCESS_ITEMS)).empty?
|
data/lib/ddbcli/ddb-parser.y
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ddbcli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
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-05-
|
12
|
+
date: 2013-05-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|