embulk-output-jdbc 0.1.3 → 0.2.0

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: 22641808f55bed4bec132e7cd317220a6cfc289a
4
- data.tar.gz: f6ecc3e8d4fa66dd0f78b79e0c27d99535a11136
3
+ metadata.gz: 01a92a4a868446c83653516d3028fb5b423f2fdb
4
+ data.tar.gz: 1894bda08176a5ec0e9be2008d516689d3066871
5
5
  SHA512:
6
- metadata.gz: 94bc52aa3d7ced7da88fd92f990b8cec391b131f27b4158faeeec7b1c0aad41445fab52389f1c6d2ecaef8d36ff2baa35cf38cc13682cecf2a8e1640c3e46edb
7
- data.tar.gz: 4fb618c9f6cb3d23cfccc2999468fb060aee2b811d16686bcd74af929a973acfa07d059c3c93e45d0ce330d21916716d0d07b06982f3035205b7bc1a9ff96497
6
+ metadata.gz: 3bc0733eec6851d2f953fe32c703177643b21bf09e34d463af4bf876ef7525b8eeaca4070627c41e0cb595b0f875bfac60ffcc6bea18cfa8c4e4779b2f9c1302
7
+ data.tar.gz: 76ba0c713a4dcd324aae9c9d8502556a082df91b36a9708277e69a8b81a91753bd91b7d8143299bd98fb9878f8f6ad09e77634456ad6fcfff0c0066f103be049
@@ -27,15 +27,27 @@ public class JdbcOutputPlugin
27
27
 
28
28
  public interface GenericPluginTask extends PluginTask
29
29
  {
30
- @Config("driver_name")
31
- public String getDriverName();
30
+ @Config("driver_path")
31
+ @ConfigDefault("null")
32
+ public Optional<String> getDriverPath();
32
33
 
33
34
  @Config("driver_class")
34
35
  public String getDriverClass();
35
36
 
36
- @Config("driver_path")
37
+ @Config("url")
38
+ public String getUrl();
39
+
40
+ @Config("user")
37
41
  @ConfigDefault("null")
38
- public Optional<String> getDriverPath();
42
+ public Optional<String> getUser();
43
+
44
+ @Config("password")
45
+ @ConfigDefault("null")
46
+ public Optional<String> getPassword();
47
+
48
+ @Config("schema")
49
+ @ConfigDefault("null")
50
+ public Optional<String> getSchema();
39
51
  }
40
52
 
41
53
  @Override
@@ -47,11 +59,11 @@ public class JdbcOutputPlugin
47
59
  @Override
48
60
  protected GenericOutputConnector getConnector(PluginTask task, boolean retryableMetadataOperation)
49
61
  {
50
- GenericPluginTask g = (GenericPluginTask) task;
62
+ GenericPluginTask t = (GenericPluginTask) task;
51
63
 
52
- if (g.getDriverPath().isPresent()) {
64
+ if (t.getDriverPath().isPresent()) {
53
65
  synchronized (loadedJarGlobs) {
54
- String glob = g.getDriverPath().get();
66
+ String glob = t.getDriverPath().get();
55
67
  if (!loadedJarGlobs.contains(glob)) {
56
68
  loadDriverJar(glob);
57
69
  loadedJarGlobs.add(glob);
@@ -59,23 +71,18 @@ public class JdbcOutputPlugin
59
71
  }
60
72
  }
61
73
 
62
- String url;
63
- if (g.getPort().isPresent()) {
64
- url = String.format("jdbc:%s://%s:%d/%s",
65
- g.getDriverName(), g.getHost(), g.getPort().get(), g.getDatabase());
66
- } else {
67
- url = String.format("jdbc:%s://%s/%s",
68
- g.getDriverName(), g.getHost(), g.getDatabase());
69
- }
70
-
71
74
  Properties props = new Properties();
72
- props.setProperty("user", g.getUser());
73
- props.setProperty("password", g.getPassword());
75
+ if (t.getUser().isPresent()) {
76
+ props.setProperty("user", t.getUser().get());
77
+ }
78
+ if (t.getPassword().isPresent()) {
79
+ props.setProperty("password", t.getPassword().get());
80
+ }
74
81
 
75
- props.putAll(g.getOptions());
82
+ props.putAll(t.getOptions());
76
83
 
77
- return new GenericOutputConnector(url, props, g.getDriverClass(),
78
- g.getSchema().orNull());
84
+ return new GenericOutputConnector(t.getUrl(), props, t.getDriverClass(),
85
+ t.getSchema().orNull());
79
86
  }
80
87
 
81
88
  private void loadDriverJar(String glob)
@@ -45,31 +45,10 @@ public abstract class AbstractJdbcOutputPlugin
45
45
  public interface PluginTask
46
46
  extends Task
47
47
  {
48
- @Config("host")
49
- public String getHost();
50
-
51
- @Config("port")
52
- @ConfigDefault("null")
53
- public Optional<Integer> getPort();
54
-
55
- @Config("user")
56
- public String getUser();
57
-
58
- @Config("password")
59
- @ConfigDefault("\"\"")
60
- public String getPassword();
61
-
62
48
  @Config("options")
63
49
  @ConfigDefault("{}")
64
50
  public Properties getOptions();
65
51
 
66
- @Config("database")
67
- public String getDatabase();
68
-
69
- @Config("schema")
70
- @ConfigDefault("null")
71
- public Optional<String> getSchema();
72
-
73
52
  @Config("table")
74
53
  public String getTable();
75
54
 
@@ -52,6 +52,7 @@ public class JdbcOutputConnection
52
52
  try {
53
53
  String sql = "SET search_path TO " + quoteIdentifierString(schema);
54
54
  executeUpdate(stmt, sql);
55
+ commitIfNecessary(connection);
55
56
  } finally {
56
57
  stmt.close();
57
58
  }
@@ -63,10 +64,9 @@ public class JdbcOutputConnection
63
64
  try {
64
65
  String sql = String.format("DROP TABLE IF EXISTS %s", quoteIdentifierString(tableName));
65
66
  executeUpdate(stmt, sql);
66
- connection.commit();
67
+ commitIfNecessary(connection);
67
68
  } catch (SQLException ex) {
68
- connection.rollback();
69
- throw ex;
69
+ throw safeRollback(connection, ex);
70
70
  } finally {
71
71
  stmt.close();
72
72
  }
@@ -78,10 +78,9 @@ public class JdbcOutputConnection
78
78
  try {
79
79
  String sql = buildCreateTableIfNotExistsSql(tableName, schema);
80
80
  executeUpdate(stmt, sql);
81
- connection.commit();
81
+ commitIfNecessary(connection);
82
82
  } catch (SQLException ex) {
83
- connection.rollback();
84
- throw ex;
83
+ throw safeRollback(connection, ex);
85
84
  } finally {
86
85
  stmt.close();
87
86
  }
@@ -226,7 +225,7 @@ public class JdbcOutputConnection
226
225
  }
227
226
  String sql = buildInsertTableSql(fromTable, fromTableSchema, toTable);
228
227
  executeUpdate(stmt, sql);
229
- connection.commit();
228
+ commitIfNecessary(connection);
230
229
  } catch (SQLException ex) {
231
230
  connection.rollback();
232
231
  throw ex;
@@ -276,10 +275,9 @@ public class JdbcOutputConnection
276
275
  // }
277
276
  // String sql = buildGatherInsertTables(fromTable, fromTableSchema, toTable);
278
277
  // executeUpdate(stmt, sql);
279
- // connection.commit();
278
+ // commitIfNecessary(connection);
280
279
  // } catch (SQLException ex) {
281
- // connection.rollback();
282
- // throw ex;
280
+ // throw safeRollback(connection, ex);
283
281
  // } finally {
284
282
  // stmt.close();
285
283
  // }
@@ -307,10 +305,9 @@ public class JdbcOutputConnection
307
305
  executeUpdate(stmt, sql);
308
306
  }
309
307
 
310
- connection.commit();
308
+ commitIfNecessary(connection);
311
309
  } catch (SQLException ex) {
312
- connection.rollback();
313
- throw ex;
310
+ throw safeRollback(connection, ex);
314
311
  } finally {
315
312
  stmt.close();
316
313
  }
@@ -420,4 +417,27 @@ public class JdbcOutputConnection
420
417
  }
421
418
  return count;
422
419
  }
420
+
421
+ protected void commitIfNecessary(Connection con) throws SQLException
422
+ {
423
+ if (!con.getAutoCommit()) {
424
+ con.commit();
425
+ }
426
+ }
427
+
428
+ protected SQLException safeRollback(Connection con, SQLException cause)
429
+ {
430
+ try {
431
+ if (!con.getAutoCommit()) {
432
+ con.rollback();
433
+ }
434
+ return cause;
435
+ } catch (SQLException ex) {
436
+ if (cause != null) {
437
+ cause.addSuppressed(ex);
438
+ return cause;
439
+ }
440
+ return ex;
441
+ }
442
+ }
423
443
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embulk-output-jdbc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sadayuki Furuhashi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-27 00:00:00.000000000 Z
11
+ date: 2015-02-28 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Inserts or updates records to a table.
14
14
  email:
@@ -39,7 +39,7 @@ files:
39
39
  - src/main/java/org/embulk/output/jdbc/setter/SqlTimestampColumnSetter.java
40
40
  - src/main/java/org/embulk/output/jdbc/setter/StringColumnSetter.java
41
41
  - src/test/java/org/embulk/output/TestJdbcOutputPlugin.java
42
- - classpath/embulk-output-jdbc-0.1.3.jar
42
+ - classpath/embulk-output-jdbc-0.2.0.jar
43
43
  homepage: https://github.com/embulk/embulk-output-jdbc
44
44
  licenses:
45
45
  - Apache 2.0
Binary file