embulk-output-jdbc 0.7.0 → 0.7.1
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:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 3f912491ce43b8714fa207c9751ce0732f1d860f
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 09361f2b0088b3df654a741018d99c7ee3256f05
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 51aa4687726314754747e3513c3316182caf5bae198a9267699057b17cabe68ec3020451f804c0f9fa8b83d79d425c9ab7b3ea8689dd1c117819eca538c90dbe
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 8e37f62b9742d79b59a4637666bbcf9443fe8ea4fb92d4aa328e235c1ea0c30b764cb2e48124a865537852547f4474c32e3e9d181f306716c5fb7cdda694e13b
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -30,6 +30,7 @@ Generic JDBC output plugin for Embulk loads records to a database using a JDBC d 
     | 
|
| 
       30 
30 
     | 
    
         
             
              - **value_type**: This plugin converts input column type (embulk type) into a database type to build a INSERT statement. This value_type option controls the type of the value in a INSERT statement. (string, default: depends on the sql type of the column. Available values options are: `byte`, `short`, `int`, `long`, `double`, `float`, `boolean`, `string`, `nstring`, `date`, `time`, `timestamp`, `decimal`, `json`, `null`, `pass`)
         
     | 
| 
       31 
31 
     | 
    
         
             
              - **timestamp_format**: If input column type (embulk type) is timestamp and value_type is `string` or `nstring`, this plugin needs to format the timestamp value into a string. This timestamp_format option is used to control the format of the timestamp. (string, default: `%Y-%m-%d %H:%M:%S.%6N`)
         
     | 
| 
       32 
32 
     | 
    
         
             
              - **timezone**: If input column type (embulk type) is timestamp, this plugin needs to format the timestamp value into a SQL string. In this cases, this timezone option is used to control the timezone. (string, value of default_timezone option is used by default)
         
     | 
| 
      
 33 
     | 
    
         
            +
            - **after_load**: if set, this SQL will be executed after loading all records.
         
     | 
| 
       33 
34 
     | 
    
         | 
| 
       34 
35 
     | 
    
         
             
            ## Modes
         
     | 
| 
       35 
36 
     | 
    
         | 
| 
         Binary file 
     | 
| 
         @@ -108,6 +108,10 @@ public abstract class AbstractJdbcOutputPlugin 
     | 
|
| 
       108 
108 
     | 
    
         
             
                    @ConfigDefault("null")
         
     | 
| 
       109 
109 
     | 
    
         
             
                    public Optional<List<String>> getMergeRule();
         
     | 
| 
       110 
110 
     | 
    
         | 
| 
      
 111 
     | 
    
         
            +
                    @Config("after_load")
         
     | 
| 
      
 112 
     | 
    
         
            +
                    @ConfigDefault("null")
         
     | 
| 
      
 113 
     | 
    
         
            +
                    public Optional<String> getAfterLoad();
         
     | 
| 
      
 114 
     | 
    
         
            +
             
     | 
| 
       111 
115 
     | 
    
         
             
                    public void setActualTable(String actualTable);
         
     | 
| 
       112 
116 
     | 
    
         
             
                    public String getActualTable();
         
     | 
| 
       113 
117 
     | 
    
         | 
| 
         @@ -394,7 +398,7 @@ public abstract class AbstractJdbcOutputPlugin 
     | 
|
| 
       394 
398 
     | 
    
         
             
                private ConfigDiff commit(final PluginTask task,
         
     | 
| 
       395 
399 
     | 
    
         
             
                        Schema schema, final int taskCount)
         
     | 
| 
       396 
400 
     | 
    
         
             
                {
         
     | 
| 
       397 
     | 
    
         
            -
                    if (!task.getMode().isDirectModify()) {  // no intermediate data if isDirectModify == true
         
     | 
| 
      
 401 
     | 
    
         
            +
                    if (!task.getMode().isDirectModify() || task.getAfterLoad().isPresent()) {  // no intermediate data if isDirectModify == true
         
     | 
| 
       398 
402 
     | 
    
         
             
                        try {
         
     | 
| 
       399 
403 
     | 
    
         
             
                            withRetry(task, new IdempotentSqlRunnable() {
         
     | 
| 
       400 
404 
     | 
    
         
             
                                public void run() throws SQLException
         
     | 
| 
         @@ -492,7 +496,7 @@ public abstract class AbstractJdbcOutputPlugin 
     | 
|
| 
       492 
496 
     | 
    
         
             
                        if (mode.tempTablePerTask()) {
         
     | 
| 
       493 
497 
     | 
    
         
             
                            String namePrefix = generateIntermediateTableNamePrefix(task.getActualTable(), con, 3,
         
     | 
| 
       494 
498 
     | 
    
         
             
                                    task.getFeatures().getMaxTableNameLength(), task.getFeatures().getTableNameLengthSemantics());
         
     | 
| 
       495 
     | 
    
         
            -
                            for (int i=0; i < taskCount; i++) {
         
     | 
| 
      
 499 
     | 
    
         
            +
                            for (int i = 0; i < taskCount; i++) {
         
     | 
| 
       496 
500 
     | 
    
         
             
                                intermTableNames.add(namePrefix + String.format("%03d", i));
         
     | 
| 
       497 
501 
     | 
    
         
             
                            }
         
     | 
| 
       498 
502 
     | 
    
         
             
                        } else {
         
     | 
| 
         @@ -666,16 +670,15 @@ public abstract class AbstractJdbcOutputPlugin 
     | 
|
| 
       666 
670 
     | 
    
         
             
                protected void doCommit(JdbcOutputConnection con, PluginTask task, int taskCount)
         
     | 
| 
       667 
671 
     | 
    
         
             
                    throws SQLException
         
     | 
| 
       668 
672 
     | 
    
         
             
                {
         
     | 
| 
       669 
     | 
    
         
            -
                    if (task.getIntermediateTables().get().isEmpty()) {
         
     | 
| 
       670 
     | 
    
         
            -
                        return;
         
     | 
| 
       671 
     | 
    
         
            -
                    }
         
     | 
| 
       672 
     | 
    
         
            -
             
     | 
| 
       673 
673 
     | 
    
         
             
                    JdbcSchema schema = filterSkipColumns(task.getTargetTableSchema());
         
     | 
| 
       674 
674 
     | 
    
         | 
| 
       675 
675 
     | 
    
         
             
                    switch (task.getMode()) {
         
     | 
| 
       676 
676 
     | 
    
         
             
                    case INSERT_DIRECT:
         
     | 
| 
       677 
677 
     | 
    
         
             
                    case MERGE_DIRECT:
         
     | 
| 
       678 
678 
     | 
    
         
             
                        // already done
         
     | 
| 
      
 679 
     | 
    
         
            +
                        if (task.getAfterLoad().isPresent()) {
         
     | 
| 
      
 680 
     | 
    
         
            +
                            con.executeSql(task.getAfterLoad().get());
         
     | 
| 
      
 681 
     | 
    
         
            +
                        }
         
     | 
| 
       679 
682 
     | 
    
         
             
                        break;
         
     | 
| 
       680 
683 
     | 
    
         | 
| 
       681 
684 
     | 
    
         
             
                    case INSERT:
         
     | 
| 
         @@ -683,7 +686,7 @@ public abstract class AbstractJdbcOutputPlugin 
     | 
|
| 
       683 
686 
     | 
    
         
             
                        if (task.getNewTableSchema().isPresent()) {
         
     | 
| 
       684 
687 
     | 
    
         
             
                            con.createTableIfNotExists(task.getActualTable(), task.getNewTableSchema().get());
         
     | 
| 
       685 
688 
     | 
    
         
             
                        }
         
     | 
| 
       686 
     | 
    
         
            -
                        con.collectInsert(task.getIntermediateTables().get(), schema, task.getActualTable(), false);
         
     | 
| 
      
 689 
     | 
    
         
            +
                        con.collectInsert(task.getIntermediateTables().get(), schema, task.getActualTable(), false, task.getAfterLoad());
         
     | 
| 
       687 
690 
     | 
    
         
             
                        break;
         
     | 
| 
       688 
691 
     | 
    
         | 
| 
       689 
692 
     | 
    
         
             
                    case TRUNCATE_INSERT:
         
     | 
| 
         @@ -691,7 +694,7 @@ public abstract class AbstractJdbcOutputPlugin 
     | 
|
| 
       691 
694 
     | 
    
         
             
                        if (task.getNewTableSchema().isPresent()) {
         
     | 
| 
       692 
695 
     | 
    
         
             
                            con.createTableIfNotExists(task.getActualTable(), task.getNewTableSchema().get());
         
     | 
| 
       693 
696 
     | 
    
         
             
                        }
         
     | 
| 
       694 
     | 
    
         
            -
                        con.collectInsert(task.getIntermediateTables().get(), schema, task.getActualTable(), true);
         
     | 
| 
      
 697 
     | 
    
         
            +
                        con.collectInsert(task.getIntermediateTables().get(), schema, task.getActualTable(), true, task.getAfterLoad());
         
     | 
| 
       695 
698 
     | 
    
         
             
                        break;
         
     | 
| 
       696 
699 
     | 
    
         | 
| 
       697 
700 
     | 
    
         
             
                    case MERGE:
         
     | 
| 
         @@ -699,12 +702,13 @@ public abstract class AbstractJdbcOutputPlugin 
     | 
|
| 
       699 
702 
     | 
    
         
             
                        if (task.getNewTableSchema().isPresent()) {
         
     | 
| 
       700 
703 
     | 
    
         
             
                            con.createTableIfNotExists(task.getActualTable(), task.getNewTableSchema().get());
         
     | 
| 
       701 
704 
     | 
    
         
             
                        }
         
     | 
| 
       702 
     | 
    
         
            -
                        con.collectMerge(task.getIntermediateTables().get(), schema, task.getActualTable(), 
     | 
| 
      
 705 
     | 
    
         
            +
                        con.collectMerge(task.getIntermediateTables().get(), schema, task.getActualTable(),
         
     | 
| 
      
 706 
     | 
    
         
            +
                                new MergeConfig(task.getMergeKeys().get(), task.getMergeRule()), task.getAfterLoad());
         
     | 
| 
       703 
707 
     | 
    
         
             
                        break;
         
     | 
| 
       704 
708 
     | 
    
         | 
| 
       705 
709 
     | 
    
         
             
                    case REPLACE:
         
     | 
| 
       706 
710 
     | 
    
         
             
                        // swap table
         
     | 
| 
       707 
     | 
    
         
            -
                        con.replaceTable(task.getIntermediateTables().get().get(0), schema, task.getActualTable());
         
     | 
| 
      
 711 
     | 
    
         
            +
                        con.replaceTable(task.getIntermediateTables().get().get(0), schema, task.getActualTable(), task.getAfterLoad());
         
     | 
| 
       708 
712 
     | 
    
         
             
                        break;
         
     | 
| 
       709 
713 
     | 
    
         
             
                    }
         
     | 
| 
       710 
714 
     | 
    
         
             
                }
         
     | 
| 
         @@ -280,9 +280,26 @@ public class JdbcOutputConnection 
     | 
|
| 
       280 
280 
     | 
    
         
             
                    throw new UnsupportedOperationException("not implemented");
         
     | 
| 
       281 
281 
     | 
    
         
             
                }
         
     | 
| 
       282 
282 
     | 
    
         | 
| 
      
 283 
     | 
    
         
            +
                protected void executeSql(String sql) throws SQLException
         
     | 
| 
      
 284 
     | 
    
         
            +
                {
         
     | 
| 
      
 285 
     | 
    
         
            +
                    Statement stmt = connection.createStatement();
         
     | 
| 
      
 286 
     | 
    
         
            +
                    try {
         
     | 
| 
      
 287 
     | 
    
         
            +
                        executeUpdate(stmt, sql);
         
     | 
| 
      
 288 
     | 
    
         
            +
                        commitIfNecessary(connection);
         
     | 
| 
      
 289 
     | 
    
         
            +
                    } catch (SQLException ex) {
         
     | 
| 
      
 290 
     | 
    
         
            +
                        throw safeRollback(connection, ex);
         
     | 
| 
      
 291 
     | 
    
         
            +
                    } finally {
         
     | 
| 
      
 292 
     | 
    
         
            +
                        stmt.close();
         
     | 
| 
      
 293 
     | 
    
         
            +
                    }
         
     | 
| 
      
 294 
     | 
    
         
            +
                }
         
     | 
| 
      
 295 
     | 
    
         
            +
             
     | 
| 
       283 
296 
     | 
    
         
             
                protected void collectInsert(List<String> fromTables, JdbcSchema schema, String toTable,
         
     | 
| 
       284 
     | 
    
         
            -
                        boolean truncateDestinationFirst) throws SQLException
         
     | 
| 
      
 297 
     | 
    
         
            +
                        boolean truncateDestinationFirst, Optional<String> additionalSql) throws SQLException
         
     | 
| 
       285 
298 
     | 
    
         
             
                {
         
     | 
| 
      
 299 
     | 
    
         
            +
                    if (fromTables.isEmpty()) {
         
     | 
| 
      
 300 
     | 
    
         
            +
                        return;
         
     | 
| 
      
 301 
     | 
    
         
            +
                    }
         
     | 
| 
      
 302 
     | 
    
         
            +
             
     | 
| 
       286 
303 
     | 
    
         
             
                    Statement stmt = connection.createStatement();
         
     | 
| 
       287 
304 
     | 
    
         
             
                    try {
         
     | 
| 
       288 
305 
     | 
    
         
             
                        if (truncateDestinationFirst) {
         
     | 
| 
         @@ -291,6 +308,9 @@ public class JdbcOutputConnection 
     | 
|
| 
       291 
308 
     | 
    
         
             
                        }
         
     | 
| 
       292 
309 
     | 
    
         
             
                        String sql = buildCollectInsertSql(fromTables, schema, toTable);
         
     | 
| 
       293 
310 
     | 
    
         
             
                        executeUpdate(stmt, sql);
         
     | 
| 
      
 311 
     | 
    
         
            +
                        if (additionalSql.isPresent()) {
         
     | 
| 
      
 312 
     | 
    
         
            +
                            executeUpdate(stmt, additionalSql.get());
         
     | 
| 
      
 313 
     | 
    
         
            +
                        }
         
     | 
| 
       294 
314 
     | 
    
         
             
                        commitIfNecessary(connection);
         
     | 
| 
       295 
315 
     | 
    
         
             
                    } catch (SQLException ex) {
         
     | 
| 
       296 
316 
     | 
    
         
             
                        throw safeRollback(connection, ex);
         
     | 
| 
         @@ -335,12 +355,20 @@ public class JdbcOutputConnection 
     | 
|
| 
       335 
355 
     | 
    
         
             
                    return sb.toString();
         
     | 
| 
       336 
356 
     | 
    
         
             
                }
         
     | 
| 
       337 
357 
     | 
    
         | 
| 
       338 
     | 
    
         
            -
                protected void collectMerge(List<String> fromTables, JdbcSchema schema, String toTable, MergeConfig mergeConfig 
     | 
| 
      
 358 
     | 
    
         
            +
                protected void collectMerge(List<String> fromTables, JdbcSchema schema, String toTable, MergeConfig mergeConfig,
         
     | 
| 
      
 359 
     | 
    
         
            +
                        Optional<String> additionalSql) throws SQLException
         
     | 
| 
       339 
360 
     | 
    
         
             
                {
         
     | 
| 
      
 361 
     | 
    
         
            +
                    if (fromTables.isEmpty()) {
         
     | 
| 
      
 362 
     | 
    
         
            +
                        return;
         
     | 
| 
      
 363 
     | 
    
         
            +
                    }
         
     | 
| 
      
 364 
     | 
    
         
            +
             
     | 
| 
       340 
365 
     | 
    
         
             
                    Statement stmt = connection.createStatement();
         
     | 
| 
       341 
366 
     | 
    
         
             
                    try {
         
     | 
| 
       342 
367 
     | 
    
         
             
                        String sql = buildCollectMergeSql(fromTables, schema, toTable, mergeConfig);
         
     | 
| 
       343 
368 
     | 
    
         
             
                        executeUpdate(stmt, sql);
         
     | 
| 
      
 369 
     | 
    
         
            +
                        if (additionalSql.isPresent()) {
         
     | 
| 
      
 370 
     | 
    
         
            +
                            executeUpdate(stmt, additionalSql.get());
         
     | 
| 
      
 371 
     | 
    
         
            +
                        }
         
     | 
| 
       344 
372 
     | 
    
         
             
                        commitIfNecessary(connection);
         
     | 
| 
       345 
373 
     | 
    
         
             
                    } catch (SQLException ex) {
         
     | 
| 
       346 
374 
     | 
    
         
             
                        throw safeRollback(connection, ex);
         
     | 
| 
         @@ -354,14 +382,15 @@ public class JdbcOutputConnection 
     | 
|
| 
       354 
382 
     | 
    
         
             
                    throw new UnsupportedOperationException("not implemented");
         
     | 
| 
       355 
383 
     | 
    
         
             
                }
         
     | 
| 
       356 
384 
     | 
    
         | 
| 
       357 
     | 
    
         
            -
                public void replaceTable(String fromTable, JdbcSchema schema, String toTable) throws SQLException
         
     | 
| 
      
 385 
     | 
    
         
            +
                public void replaceTable(String fromTable, JdbcSchema schema, String toTable, Optional<String> additionalSql) throws SQLException
         
     | 
| 
       358 
386 
     | 
    
         
             
                {
         
     | 
| 
       359 
387 
     | 
    
         
             
                    Statement stmt = connection.createStatement();
         
     | 
| 
       360 
388 
     | 
    
         
             
                    try {
         
     | 
| 
       361 
389 
     | 
    
         
             
                        dropTableIfExists(stmt, toTable);
         
     | 
| 
       362 
     | 
    
         
            -
             
     | 
| 
       363 
390 
     | 
    
         
             
                        executeUpdate(stmt, buildRenameTableSql(fromTable, toTable));
         
     | 
| 
       364 
     | 
    
         
            -
             
     | 
| 
      
 391 
     | 
    
         
            +
                        if (additionalSql.isPresent()) {
         
     | 
| 
      
 392 
     | 
    
         
            +
                            executeUpdate(stmt, additionalSql.get());
         
     | 
| 
      
 393 
     | 
    
         
            +
                        }
         
     | 
| 
       365 
394 
     | 
    
         
             
                        commitIfNecessary(connection);
         
     | 
| 
       366 
395 
     | 
    
         
             
                    } catch (SQLException ex) {
         
     | 
| 
       367 
396 
     | 
    
         
             
                        throw safeRollback(connection, ex);
         
     | 
    
        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.7. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.7.1
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Sadayuki Furuhashi
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire:
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2016- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2016-11-25 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies: []
         
     | 
| 
       13 
13 
     | 
    
         
             
            description: Inserts or updates records to a table.
         
     | 
| 
       14 
14 
     | 
    
         
             
            email:
         
     | 
| 
         @@ -19,7 +19,7 @@ extra_rdoc_files: [] 
     | 
|
| 
       19 
19 
     | 
    
         
             
            files:
         
     | 
| 
       20 
20 
     | 
    
         
             
            - README.md
         
     | 
| 
       21 
21 
     | 
    
         
             
            - build.gradle
         
     | 
| 
       22 
     | 
    
         
            -
            - classpath/embulk-output-jdbc-0.7. 
     | 
| 
      
 22 
     | 
    
         
            +
            - classpath/embulk-output-jdbc-0.7.1.jar
         
     | 
| 
       23 
23 
     | 
    
         
             
            - lib/embulk/output/jdbc.rb
         
     | 
| 
       24 
24 
     | 
    
         
             
            - src/main/java/org/embulk/output/JdbcOutputPlugin.java
         
     | 
| 
       25 
25 
     | 
    
         
             
            - src/main/java/org/embulk/output/jdbc/AbstractJdbcOutputPlugin.java
         
     |