src/main/java/org/embulk/output/PostgreSQLOutputPlugin.java in embulk-output-postgresql-0.5.1 vs src/main/java/org/embulk/output/PostgreSQLOutputPlugin.java in embulk-output-postgresql-0.6.0

- old
+ new

@@ -1,27 +1,31 @@ package org.embulk.output; -import java.util.List; -import java.util.Properties; import java.io.IOException; import java.sql.SQLException; -import com.google.common.base.Optional; -import com.google.common.collect.ImmutableSet; +import java.sql.Types; +import java.util.List; +import java.util.Properties; + import org.embulk.config.Config; import org.embulk.config.ConfigDefault; import org.embulk.output.jdbc.AbstractJdbcOutputPlugin; import org.embulk.output.jdbc.BatchInsert; -import org.embulk.output.postgresql.PostgreSQLOutputConnector; +import org.embulk.output.jdbc.JdbcColumn; +import org.embulk.output.jdbc.JdbcSchema; +import org.embulk.output.jdbc.setter.ColumnSetterFactory; import org.embulk.output.postgresql.PostgreSQLCopyBatchInsert; +import org.embulk.output.postgresql.PostgreSQLOutputConnector; +import org.embulk.output.postgresql.setter.PostgreSQLColumnSetterFactory; +import org.embulk.spi.Column; +import org.embulk.spi.ColumnVisitor; +import org.embulk.spi.Schema; +import org.joda.time.DateTimeZone; +import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; -import java.sql.Types; -import org.embulk.spi.Schema; -import org.embulk.spi.ColumnVisitor; -import org.embulk.spi.Column; -import org.embulk.output.jdbc.JdbcColumn; -import org.embulk.output.jdbc.JdbcSchema; +import com.google.common.collect.ImmutableSet; public class PostgreSQLOutputPlugin extends AbstractJdbcOutputPlugin { public interface PostgreSQLPluginTask @@ -153,11 +157,13 @@ 4000, 0, false, false)); // TODO size type param } public void jsonColumn(Column column) { - throw new UnsupportedOperationException("This plugin doesn't support json type. Please try to upgrade version of the plugin using 'embulk gem update' command. If the latest version still doesn't support json type, please contact plugin developers, or change configuration of input plugin not to use json type."); + columns.add(JdbcColumn.newGenericTypeColumn( + columnName, Types.OTHER, "JSON", + 4000, 0, false, false)); // TODO size type param } public void timestampColumn(Column column) { columns.add(JdbcColumn.newGenericTypeColumn( @@ -165,7 +171,13 @@ 26, 0, false, false)); // size type param is from postgresql } }); } return new JdbcSchema(columns.build()); + } + + @Override + protected ColumnSetterFactory newColumnSetterFactory(BatchInsert batch, DateTimeZone defaultTimeZone) + { + return new PostgreSQLColumnSetterFactory(batch, defaultTimeZone); } }