embulk-output-td 0.3.15 → 0.4.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d84da88a0b812745d299e5cc9f79c0da3de7c935
4
- data.tar.gz: 124b87a0282e8ef587a8426fafff5eb161d7c6ac
3
+ metadata.gz: 11b5c3e330412f6124619e5a42b1a2752c2fe163
4
+ data.tar.gz: cc39b754466f6bd06fa4f2148235d29991d7c899
5
5
  SHA512:
6
- metadata.gz: c8dddfbb22ffe88bddc057fff3027b1e2ad8b7e3ce13a50d735de9731119c2c2510f9714d5464b81e15d94f776a2ca724d684b4b44a53ed2e0a83a57af0f5adc
7
- data.tar.gz: 10c5381c7b06618cdd3c931684f8debbc7ef579b74aab8f72f5ae0e346cd9af71e86ef7adfd9ba08d96755d169f2663a8657e62d3b4a1f8899d8eaccea816ea7
6
+ metadata.gz: c00286be234967a6693ee52c3c06042dc7e49be1ccfe8ecb4f4f4a0df4d7fe265394f57a4ef27c0628798d4ca7d0a3a0d343b63c065a38490d3e64beb2a3bbfd
7
+ data.tar.gz: e6e5f805e8a1630d1a5cc768e018df977496ca605042a783a2294111d241d080691f79a183cee37ae06133bf3535f2947e3ef78c24e17ca71b468f8ca5b8a150
@@ -1,3 +1,8 @@
1
+ ## 0.4.0 - 2017-06-26
2
+
3
+ * [maintenance] Use TDClient#showTable method to to get table schema [#64](https://github.com/treasure-data/embulk-output-td/pull/64)
4
+ * [maintenance] Use TDClient#appendTableSchema method to update table schema [#65](https://github.com/treasure-data/embulk-output-td/pull/65)
5
+
1
6
  ## 0.3.15 - 2017-05-30
2
7
 
3
8
  * [fix bug] Use underscores for sessions names to fix #70 [#71](https://github.com/treasure-data/embulk-output-td/pull/71)
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # TD output plugin for Embulk
2
2
 
3
- TODO: Write short description here
3
+ [Treasure Data Service](https://www.treasuredata.com/) output plugin for [Embulk](https://github.com/embulk/embulk)
4
+
5
+ **NOTICE**: embulk-output-td v0.4.0+ only supports **Embulk v0.8.22+**.
4
6
 
5
7
  ## Overview
6
8
 
@@ -110,4 +112,4 @@ Repo URL: https://rubygems.org/gems/embulk-output-td
110
112
  $ ./gradlew bintrayUpload
111
113
  ```
112
114
 
113
- Repo URL: https://bintray.com/embulk-output-td/maven/embulk-output-td
115
+ Repo URL: https://bintray.com/embulk-output-td/maven/embulk-output-td
@@ -19,7 +19,7 @@ configurations {
19
19
  }
20
20
 
21
21
  group = "org.embulk.output.td"
22
- version = "0.3.15"
22
+ version = "0.4.0"
23
23
 
24
24
  compileJava.options.encoding = 'UTF-8' // source encoding
25
25
  sourceCompatibility = 1.7
@@ -32,7 +32,7 @@ dependencies {
32
32
  provided "org.embulk:embulk-standards:0.8.+"
33
33
  compile "org.msgpack:msgpack-core:0.8.+"
34
34
  provided "org.msgpack:msgpack-core:0.8.+"
35
- compile "com.treasuredata.client:td-client:0.7.29"
35
+ compile "com.treasuredata.client:td-client:0.7.38"
36
36
 
37
37
  testCompile "junit:junit:4.+"
38
38
  testCompile "org.bigtesting:fixd:1.0.0"
@@ -1,7 +1,7 @@
1
1
 
2
2
  Gem::Specification.new do |spec|
3
3
  spec.name = "embulk-output-td"
4
- spec.version = "0.3.15"
4
+ spec.version = "0.4.0"
5
5
  spec.authors = ["Muga Nishizawa"]
6
6
  spec.summary = %[TreasureData output plugin for Embulk]
7
7
  spec.description = %[TreasureData output plugin is an Embulk plugin that loads records to TreasureData read by any input plugins. Search the input plugins by 'embulk-output' keyword.]
@@ -33,6 +33,7 @@ import com.treasuredata.client.model.TDBulkImportSession.ImportStatus;
33
33
  import com.treasuredata.client.model.TDColumn;
34
34
  import com.treasuredata.client.model.TDColumnType;
35
35
  import com.treasuredata.client.model.TDTable;
36
+ import org.embulk.EmbulkVersion;
36
37
  import org.embulk.config.TaskReport;
37
38
  import org.embulk.config.Config;
38
39
  import org.embulk.config.ConfigDefault;
@@ -356,6 +357,8 @@ public class TdOutputPlugin
356
357
  task.setTempDir(Optional.of(getEnvironmentTempDirectory()));
357
358
  }
358
359
 
360
+ checkEmbulkVersion();
361
+
359
362
  try (TDClient client = newTDClient(task)) {
360
363
  String databaseName = task.getDatabase();
361
364
  String tableName = task.getTable();
@@ -555,15 +558,10 @@ public class TdOutputPlugin
555
558
  void validateTableExists(TDClient client, String databaseName, String tableName)
556
559
  {
557
560
  try {
558
- for (TDTable table : client.listTables(databaseName)) {
559
- if (table.getName().equals(tableName)) {
560
- return;
561
- }
562
- }
563
- throw new ConfigException(String.format("Table \"%s\".\"%s\" doesn't exist", databaseName, tableName));
561
+ client.showTable(databaseName, tableName);
564
562
  }
565
563
  catch (TDClientHttpNotFoundException ex) {
566
- throw new ConfigException(String.format("Database \"%s\" doesn't exist", databaseName), ex);
564
+ throw new ConfigException(String.format("Database \"%s\" or table \"%s\" doesn't exist", databaseName, tableName), ex);
567
565
  }
568
566
  }
569
567
 
@@ -754,7 +752,7 @@ public class TdOutputPlugin
754
752
  newSchema.add(new TDColumn(pair.getKey(), pair.getValue(), key.getBytes(StandardCharsets.UTF_8)));
755
753
  }
756
754
 
757
- client.updateTableSchema(databaseName, task.getLoadTargetTableName(), newSchema);
755
+ client.appendTableSchema(databaseName, task.getLoadTargetTableName(), newSchema);
758
756
  return guessedSchema;
759
757
  }
760
758
 
@@ -770,12 +768,12 @@ public class TdOutputPlugin
770
768
 
771
769
  private static TDTable findTable(TDClient client, String databaseName, String tableName)
772
770
  {
773
- for (TDTable table : client.listTables(databaseName)) {
774
- if (table.getName().equals(tableName)) {
775
- return table;
776
- }
771
+ try {
772
+ return client.showTable(databaseName, tableName);
773
+ }
774
+ catch(TDClientHttpNotFoundException e) {
775
+ return null;
777
776
  }
778
- return null;
779
777
  }
780
778
 
781
779
  private static final Pattern COLUMN_NAME_PATTERN = Pattern.compile("\\A[a-z_][a-z0-9_]*\\z");
@@ -817,6 +815,21 @@ public class TdOutputPlugin
817
815
  });
818
816
  }
819
817
 
818
+ private void checkEmbulkVersion()
819
+ {
820
+ // Embulk v0.8.21 and lower version uses old Jackson and doesn't works with this plugin
821
+ // https://github.com/embulk/embulk/pull/615
822
+ String[] versionNumber = EmbulkVersion.VERSION.split("-"); // to split e.g. "0.8.26-SNAPSHOT" or "0.8.30-ALPHA1"
823
+ if (versionNumber[0] != null) {
824
+ String[] versions = versionNumber[0].split("\\.");
825
+ if (versions.length == 3) {
826
+ if (Integer.valueOf(versions[1]) <= 8 && Integer.valueOf(versions[2]) < 22) {
827
+ throw new ConfigException("embulk-output-td v0.4.x+ only supports Embulk v0.8.22 or higher versions");
828
+ }
829
+ }
830
+ }
831
+ }
832
+
820
833
  @VisibleForTesting
821
834
  TDBulkImportSession waitForStatusChange(TDClient client, String sessionName,
822
835
  ImportStatus current, ImportStatus expecting, String operation)
@@ -1,7 +1,6 @@
1
1
  package org.embulk.output.td;
2
2
 
3
3
  import com.google.common.base.Optional;
4
- import com.google.common.collect.ImmutableList;
5
4
  import com.google.common.collect.ImmutableMap;
6
5
  import com.google.common.collect.Lists;
7
6
  import com.treasuredata.client.ProxyConfig;
@@ -333,24 +332,13 @@ public class TestTdOutputPlugin
333
332
  TDTable table = newTable("my_table", "[]");
334
333
 
335
334
  { // table exists
336
- doReturn(ImmutableList.of(table)).when(client).listTables(anyString());
335
+ doReturn(table).when(client).showTable(anyString(), anyString());
337
336
  plugin.validateTableExists(client, "my_db", "my_table");
338
337
  // no error happens
339
338
  }
340
339
 
341
- { // table doesn't exist
342
- doReturn(ImmutableList.of()).when(client).listTables(anyString());
343
- try {
344
- plugin.validateTableExists(client, "my_db", "my_table");
345
- fail();
346
- }
347
- catch (Throwable t) {
348
- assertTrue(t instanceof ConfigException);
349
- }
350
- }
351
-
352
- { // database doesn't exist
353
- doThrow(notFound()).when(client).listTables(anyString());
340
+ { // database or table doesn't exist
341
+ doThrow(notFound()).when(client).showTable(anyString(), anyString());
354
342
  try {
355
343
  plugin.validateTableExists(client, "my_db", "my_table");
356
344
  fail();
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embulk-output-td
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.15
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Muga Nishizawa
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-30 00:00:00.000000000 Z
11
+ date: 2017-06-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- requirement: !ruby/object:Gem::Requirement
14
+ name: bundler
15
+ version_requirements: !ruby/object:Gem::Requirement
15
16
  requirements:
16
17
  - - ~>
17
18
  - !ruby/object:Gem::Version
18
19
  version: '1.0'
19
- name: bundler
20
- prerelease: false
21
- type: :development
22
- version_requirements: !ruby/object:Gem::Requirement
20
+ requirement: !ruby/object:Gem::Requirement
23
21
  requirements:
24
22
  - - ~>
25
23
  - !ruby/object:Gem::Version
26
24
  version: '1.0'
25
+ prerelease: false
26
+ type: :development
27
27
  - !ruby/object:Gem::Dependency
28
- requirement: !ruby/object:Gem::Requirement
28
+ name: rake
29
+ version_requirements: !ruby/object:Gem::Requirement
29
30
  requirements:
30
31
  - - '>='
31
32
  - !ruby/object:Gem::Version
32
33
  version: '10.0'
33
- name: rake
34
- prerelease: false
35
- type: :development
36
- version_requirements: !ruby/object:Gem::Requirement
34
+ requirement: !ruby/object:Gem::Requirement
37
35
  requirements:
38
36
  - - '>='
39
37
  - !ruby/object:Gem::Version
40
38
  version: '10.0'
39
+ prerelease: false
40
+ type: :development
41
41
  description: TreasureData output plugin is an Embulk plugin that loads records to TreasureData read by any input plugins. Search the input plugins by 'embulk-output' keyword.
42
42
  email:
43
43
  - muga.nishizawa@gmail.com
@@ -82,7 +82,7 @@ files:
82
82
  - src/test/java/org/embulk/output/td/TestTdOutputPlugin.java
83
83
  - src/test/java/org/embulk/output/td/TestTimeValueGenerator.java
84
84
  - src/test/java/org/embulk/output/td/writer/TestFieldWriterSet.java
85
- - classpath/embulk-output-td-0.3.15.jar
85
+ - classpath/embulk-output-td-0.4.0.jar
86
86
  - classpath/hamcrest-core-1.1.jar
87
87
  - classpath/jackson-datatype-json-org-2.6.7.jar
88
88
  - classpath/jetty-client-9.2.2.v20140723.jar
@@ -92,7 +92,7 @@ files:
92
92
  - classpath/json-20090211_1.jar
93
93
  - classpath/json-simple-1.1.1.jar
94
94
  - classpath/junit-4.10.jar
95
- - classpath/td-client-0.7.29.jar
95
+ - classpath/td-client-0.7.38.jar
96
96
  homepage: https://github.com/treasure-data/embulk-output-td
97
97
  licenses:
98
98
  - Apache 2.0