embulk-output-vertica 0.5.7 → 0.5.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: daddcdfee4c5483f5844d5d1f5b88e6550d482ab
4
- data.tar.gz: 359f2050bb2fc49c6a34d51f4328e17dd17a16cf
3
+ metadata.gz: a5c852962bbea4e096164da3d4e1686a2c4dddda
4
+ data.tar.gz: db0801b7d7645f8a93442339e91427ea80c8fac9
5
5
  SHA512:
6
- metadata.gz: 834eaf89a88c7eface737474dded51f134577b10c3891564f710a9e3f0c86b473b6f7a185ad24b01b5e2a89954e3a7344f0177a7a06ed67c156eb3323eba34ce
7
- data.tar.gz: 3a435a2d1f8c0a3c3c4307b38e35ce728e99b5ae9beb78b1ebf208e62f9fd4d6c8f58759adc4b33cb423ffc88b4b3a235ae231aa5ad5a26d66aba7f5ed9c7c40
6
+ metadata.gz: 74423ccdc71170c85ead4e7b5181d4308f6c7ab391de32fcd533547cc4729aee8aaefb57792954d9680179ec0a7b29e7728fc54d9745139b9fa680aa8b2ff1fd
7
+ data.tar.gz: fbdb7aa14a69cb04fbbce927ed8da214daf099b1043c9f42faba65574058e1b19fee0c97625d31f6272220944cad470bebfb1001774a5bf6fa36d6b0b9ec331b
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ # 0.5.8 (2016/01/24)
2
+
3
+ Enhancements:
4
+
5
+ * Add resource_pool option
6
+
1
7
  # 0.5.7 (2016/01/22)
2
8
 
3
9
  Enhancements:
data/README.md CHANGED
@@ -39,6 +39,7 @@
39
39
  - **timestamp_format**: timestamp format to convert into/from `timestamp` (string, default is "%Y-%m-%d %H:%M:%S %z")
40
40
  - **timezone**: timezone to convert into/from `timestamp` (string, default is `default_timezone`).
41
41
  - **json_payload**: Assuming first columns of records are json string, COPY each json into vertica directly using fjsonparser. This would improve performance by avoiding construction of json in this jruby plugin. ToDo: auto table creation is not supported for this mode yet (bool, default is false)
42
+ - **resource_pool**: Configure resource pool (string, default is nil)
42
43
 
43
44
  ### Modes
44
45
 
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "embulk-output-vertica"
3
- spec.version = "0.5.7"
3
+ spec.version = "0.5.8"
4
4
  spec.authors = ["eiji.sekiya", "Naotoshi Seo"]
5
5
  spec.email = ["eiji.sekiya.0326@gmail.com", "sonots@gmail.com"]
6
6
  spec.summary = "Vertica output plugin for Embulk"
@@ -31,6 +31,7 @@ module Embulk
31
31
  'default_timezone' => config.param('default_timezone', :string, :default => 'UTC'),
32
32
  'column_options' => config.param('column_options', :hash, :default => {}),
33
33
  'json_payload' => config.param('json_payload', :bool, :default => false),
34
+ 'resource_pool' => config.param('resource_pool', :string, :default => nil),
34
35
  'reject_on_materialized_type_error' => config.param('reject_on_materialized_type_error', :bool, :default => false),
35
36
  'pool' => config.param('pool', :integer, :default => processor_count),
36
37
  }
@@ -68,20 +69,18 @@ module Embulk
68
69
  quoted_table = ::Jvertica.quote_identifier(task['table'])
69
70
  quoted_temp_table = ::Jvertica.quote_identifier(task['temp_table'])
70
71
 
71
- unless task['json_payload'] # ToDo: auto table creation is not supported to json_payload mode yet
72
- sql_schema_table = self.sql_schema_from_embulk_schema(schema, task['column_options'])
72
+ connect(task) do |jv|
73
+ unless task['json_payload'] # ToDo: auto table creation is not supported to json_payload mode yet
74
+ sql_schema_table = self.sql_schema_from_embulk_schema(schema, task['column_options'])
73
75
 
74
- # create the target table
75
- connect(task) do |jv|
76
+ # create the target table
76
77
  query(jv, %[DROP TABLE IF EXISTS #{quoted_schema}.#{quoted_table}]) if task['mode'] == 'REPLACE'
77
78
  query(jv, %[CREATE TABLE IF NOT EXISTS #{quoted_schema}.#{quoted_table} (#{sql_schema_table})])
78
79
  end
79
- end
80
80
 
81
- sql_schema_temp_table = self.sql_schema_from_table(task)
81
+ sql_schema_temp_table = self.sql_schema_from_table(jv, task)
82
82
 
83
- # create a temp table
84
- connect(task) do |jv|
83
+ # create a temp table
85
84
  query(jv, %[DROP TABLE IF EXISTS #{quoted_schema}.#{quoted_temp_table}])
86
85
  query(jv, %[CREATE TABLE #{quoted_schema}.#{quoted_temp_table} (#{sql_schema_temp_table})])
87
86
  # Create internal vertica projection beforehand, otherwirse, parallel copies lock table to create a projection and we get S Lock error sometimes
@@ -155,6 +154,10 @@ module Embulk
155
154
  database: task['database'],
156
155
  })
157
156
 
157
+ if task['resource_pool']
158
+ query(jv, "SET SESSION RESOURCE_POOL = '#{task['resource_pool']}'")
159
+ end
160
+
158
161
  if block_given?
159
162
  begin
160
163
  yield jv
@@ -191,17 +194,15 @@ module Embulk
191
194
  end
192
195
  end
193
196
 
194
- def self.sql_schema_from_table(task)
197
+ def self.sql_schema_from_table(jv, task)
195
198
  quoted_schema = Jvertica.quote(task['schema'])
196
199
  quoted_table = Jvertica.quote(task['table'])
197
200
  sql = "SELECT column_name, data_type FROM v_catalog.columns " \
198
201
  "WHERE table_schema = #{quoted_schema} AND table_name = #{quoted_table}"
199
202
 
200
203
  sql_schema = {}
201
- connect(task) do |jv|
202
- result = query(jv, sql)
203
- sql_schema = result.map {|row| [row[0], row[1]] }
204
- end
204
+ result = query(jv, sql)
205
+ sql_schema = result.map {|row| [row[0], row[1]] }
205
206
  sql_schema.map {|name, type| "#{::Jvertica.quote_identifier(name)} #{type}" }.join(',')
206
207
  end
207
208
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embulk-output-vertica
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.7
4
+ version: 0.5.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - eiji.sekiya
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-01-22 00:00:00.000000000 Z
12
+ date: 2016-01-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: jvertica