td 0.10.64 → 0.10.65
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/ChangeLog +9 -0
- data/lib/td/command/bulk_import.rb +5 -4
- data/lib/td/command/job.rb +8 -8
- data/lib/td/command/table.rb +7 -6
- data/lib/td/file_reader.rb +2 -1
- data/lib/td/version.rb +1 -1
- data/td.gemspec +2 -1
- metadata +20 -10
data/ChangeLog
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
== 2012-12-27 version 0.10.65
|
2
|
+
|
3
|
+
* td-client v0.8.40
|
4
|
+
* Use Yajl.dump instead of to_json to avoid invalid encoding problem.
|
5
|
+
* Fix table:list displays broken database list in Ruby 1.8
|
6
|
+
* Fix -e option handling in bulk_import
|
7
|
+
* Add 'Last import' column to table:list
|
8
|
+
https://github.com/treasure-data/td/issues/6
|
9
|
+
|
1
10
|
== 2012-12-10 version 0.10.64
|
2
11
|
|
3
12
|
* td-client v0.8.39
|
@@ -278,8 +278,9 @@ module Command
|
|
278
278
|
exit 1
|
279
279
|
end
|
280
280
|
|
281
|
+
require 'yajl'
|
281
282
|
client.bulk_import_error_records(name) {|r|
|
282
|
-
puts r
|
283
|
+
puts Yajl.dump(r)
|
283
284
|
}
|
284
285
|
end
|
285
286
|
|
@@ -336,13 +337,13 @@ module Command
|
|
336
337
|
require 'fileutils'
|
337
338
|
FileUtils.mkdir_p(outdir)
|
338
339
|
|
339
|
-
require '
|
340
|
+
require 'yajl'
|
340
341
|
require 'msgpack'
|
341
342
|
require 'zlib'
|
342
343
|
|
343
344
|
error = Proc.new {|reason,data|
|
344
345
|
begin
|
345
|
-
$stderr.puts "#{reason}: #{data
|
346
|
+
$stderr.puts "#{reason}: #{Yajl.dump(data)}"
|
346
347
|
rescue
|
347
348
|
$stderr.puts "#{reason}"
|
348
349
|
end
|
@@ -367,7 +368,7 @@ module Command
|
|
367
368
|
zout = Zlib::GzipWriter.new(out)
|
368
369
|
|
369
370
|
t = record['time']
|
370
|
-
$stderr.puts " sample: #{Time.at(t).utc} #{record
|
371
|
+
$stderr.puts " sample: #{Time.at(t).utc} #{Yajl.dump(record)}"
|
371
372
|
end
|
372
373
|
|
373
374
|
zout.write(record.to_msgpack)
|
data/lib/td/command/job.rb
CHANGED
@@ -213,7 +213,7 @@ module Command
|
|
213
213
|
def write_result(job, output, format)
|
214
214
|
case format
|
215
215
|
when 'json'
|
216
|
-
require '
|
216
|
+
require 'yajl'
|
217
217
|
first = true
|
218
218
|
File.open(output, "w") {|f|
|
219
219
|
f.write "["
|
@@ -223,7 +223,7 @@ module Command
|
|
223
223
|
else
|
224
224
|
f.write ","
|
225
225
|
end
|
226
|
-
f.write row
|
226
|
+
f.write Yajl.dump(row)
|
227
227
|
}
|
228
228
|
f.write "]"
|
229
229
|
}
|
@@ -239,16 +239,16 @@ module Command
|
|
239
239
|
}
|
240
240
|
|
241
241
|
when 'csv'
|
242
|
-
require '
|
242
|
+
require 'yajl'
|
243
243
|
require 'csv'
|
244
244
|
CSV.open(output, "w") {|writer|
|
245
245
|
job.result_each {|row|
|
246
|
-
writer << row.map {|col| col.is_a?(String) ? col.to_s : col
|
246
|
+
writer << row.map {|col| col.is_a?(String) ? col.to_s : Yajl.dump(col) }
|
247
247
|
}
|
248
248
|
}
|
249
249
|
|
250
250
|
when 'tsv'
|
251
|
-
require '
|
251
|
+
require 'yajl'
|
252
252
|
File.open(output, "w") {|f|
|
253
253
|
job.result_each {|row|
|
254
254
|
first = true
|
@@ -258,7 +258,7 @@ module Command
|
|
258
258
|
else
|
259
259
|
f.write "\t"
|
260
260
|
end
|
261
|
-
f.write col.is_a?(String) ? col.to_s : col
|
261
|
+
f.write col.is_a?(String) ? col.to_s : Yajl.dump(col)
|
262
262
|
}
|
263
263
|
f.write "\n"
|
264
264
|
}
|
@@ -270,7 +270,7 @@ module Command
|
|
270
270
|
end
|
271
271
|
|
272
272
|
def render_result(job, opts)
|
273
|
-
require '
|
273
|
+
require 'yajl'
|
274
274
|
rows = []
|
275
275
|
job.result_each {|row|
|
276
276
|
# TODO limit number of rows to show
|
@@ -278,7 +278,7 @@ module Command
|
|
278
278
|
if v.is_a?(String)
|
279
279
|
s = v.to_s
|
280
280
|
else
|
281
|
-
s = v
|
281
|
+
s = Yajl.dump(v)
|
282
282
|
end
|
283
283
|
# Here does UTF-8 -> UTF-16LE -> UTF8 conversion:
|
284
284
|
# a) to make sure the string doesn't include invalid byte sequence
|
data/lib/td/command/table.rb
CHANGED
@@ -81,26 +81,27 @@ module Command
|
|
81
81
|
client = get_client
|
82
82
|
|
83
83
|
if db_name
|
84
|
-
|
85
|
-
|
84
|
+
database = get_database(client, db_name)
|
85
|
+
databases = [database]
|
86
86
|
else
|
87
|
-
|
87
|
+
databases = client.databases
|
88
88
|
end
|
89
89
|
|
90
90
|
rows = []
|
91
|
-
::Parallel.each(
|
91
|
+
::Parallel.each(databases, :in_threads => num_threads) {|db|
|
92
92
|
db.tables.each {|table|
|
93
93
|
pschema = table.schema.fields.map {|f|
|
94
94
|
"#{f.name}:#{f.type}"
|
95
95
|
}.join(', ')
|
96
|
-
rows << {:Database => db.name, :Table => table.name, :Type => table.type.to_s, :Count => table.count.to_s,
|
96
|
+
rows << {:Database => db.name, :Table => table.name, :Type => table.type.to_s, :Count => table.count.to_s,
|
97
|
+
:Size => table.estimated_storage_size_string, 'Last import' => table.last_import ? table.last_import.localtime : nil, :Schema => pschema}
|
97
98
|
}
|
98
99
|
}
|
99
100
|
rows = rows.sort_by {|map|
|
100
101
|
[map[:Database], map[:Type].size, map[:Table]]
|
101
102
|
}
|
102
103
|
|
103
|
-
puts cmd_render_table(rows, :fields => [:Database, :Table, :Type, :Count, :Size, :Schema], :max_width=>500)
|
104
|
+
puts cmd_render_table(rows, :fields => [:Database, :Table, :Type, :Count, :Size, 'Last import', :Schema], :max_width=>500)
|
104
105
|
|
105
106
|
if rows.empty?
|
106
107
|
if db_name
|
data/lib/td/file_reader.rb
CHANGED
@@ -40,7 +40,7 @@ module TreasureData
|
|
40
40
|
class LineReader
|
41
41
|
def initialize(io, error, opts)
|
42
42
|
if encoding = opts[:encoding]
|
43
|
-
io.
|
43
|
+
io.set_encoding(encoding) if io.respond_to?(:set_encoding)
|
44
44
|
end
|
45
45
|
#@delimiter = opts[:line_delimiter_expr] || /\r?\n/
|
46
46
|
@io = io
|
@@ -84,6 +84,7 @@ module TreasureData
|
|
84
84
|
|
85
85
|
class JSONParser
|
86
86
|
def initialize(reader, error, opts)
|
87
|
+
require 'json' # TODO yajl?
|
87
88
|
@reader = reader
|
88
89
|
@error = error
|
89
90
|
end
|
data/lib/td/version.rb
CHANGED
data/td.gemspec
CHANGED
@@ -17,9 +17,10 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.require_paths = ['lib']
|
18
18
|
|
19
19
|
gem.add_dependency "msgpack", "~> 0.4.4"
|
20
|
+
gem.add_dependency "yajl-ruby", "~> 1.1.0"
|
20
21
|
gem.add_dependency "hirb", ">= 0.4.5"
|
21
22
|
gem.add_dependency "parallel", "~> 0.5.19"
|
22
|
-
gem.add_dependency "td-client", "~> 0.8.
|
23
|
+
gem.add_dependency "td-client", "~> 0.8.40"
|
23
24
|
gem.add_dependency "td-logger", "~> 0.3.16"
|
24
25
|
gem.add_development_dependency "rake", "~> 0.9"
|
25
26
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: td
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.10.
|
4
|
+
version: 0.10.65
|
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: 2012-12-
|
12
|
+
date: 2012-12-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: msgpack
|
@@ -27,6 +27,22 @@ dependencies:
|
|
27
27
|
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: 0.4.4
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: yajl-ruby
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 1.1.0
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.1.0
|
30
46
|
- !ruby/object:Gem::Dependency
|
31
47
|
name: hirb
|
32
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,7 +82,7 @@ dependencies:
|
|
66
82
|
requirements:
|
67
83
|
- - ~>
|
68
84
|
- !ruby/object:Gem::Version
|
69
|
-
version: 0.8.
|
85
|
+
version: 0.8.40
|
70
86
|
type: :runtime
|
71
87
|
prerelease: false
|
72
88
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -74,7 +90,7 @@ dependencies:
|
|
74
90
|
requirements:
|
75
91
|
- - ~>
|
76
92
|
- !ruby/object:Gem::Version
|
77
|
-
version: 0.8.
|
93
|
+
version: 0.8.40
|
78
94
|
- !ruby/object:Gem::Dependency
|
79
95
|
name: td-logger
|
80
96
|
requirement: !ruby/object:Gem::Requirement
|
@@ -176,18 +192,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
176
192
|
- - ! '>='
|
177
193
|
- !ruby/object:Gem::Version
|
178
194
|
version: '0'
|
179
|
-
segments:
|
180
|
-
- 0
|
181
|
-
hash: -3517208562406139060
|
182
195
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
183
196
|
none: false
|
184
197
|
requirements:
|
185
198
|
- - ! '>='
|
186
199
|
- !ruby/object:Gem::Version
|
187
200
|
version: '0'
|
188
|
-
segments:
|
189
|
-
- 0
|
190
|
-
hash: -3517208562406139060
|
191
201
|
requirements: []
|
192
202
|
rubyforge_project:
|
193
203
|
rubygems_version: 1.8.23
|