@Override public void getAndSet(ResultSet from, int fromIndex, Column toColumn) throws SQLException { next.getAndSet(from, fromIndex, toColumn); }
@Override public Type getToType() { if (toType == null) { return getDefaultToType(); } return toType; }
@Override public Type getToType() { return next.getToType(); }
private ColumnGetter newColumnGetter(JdbcInputConnection con, PluginTask task, JdbcColumn column, JdbcColumnOption option, String valueType) Type toType = getToType(option); switch(valueType) { case "coalesce": return newColumnGetter(con, task, column, option, sqlTypeToValueType(column, column.getSqlType())); case "long": return new LongColumnGetter(to, toType); case "float": return new FloatColumnGetter(to, toType); case "double": return new DoubleColumnGetter(to, toType); case "boolean": return new BooleanColumnGetter(to, toType); case "string": return new StringColumnGetter(to, toType); case "json": return new JsonColumnGetter(to, toType); case "date": return new DateColumnGetter(to, toType, newTimestampFormatter(option, DateColumnGetter.DEFAULT_FORMAT)); case "time": return new TimeColumnGetter(to, toType, newTimestampFormatter(option, DateColumnGetter.DEFAULT_FORMAT)); case "timestamp": return new TimestampColumnGetter(to, toType, newTimestampFormatter(option, DateColumnGetter.DEFAULT_FORMAT)); case "decimal": return new BigDecimalColumnGetter(to, toType); default: throw new ConfigException(String.format(ENGLISH,
@Override public ColumnGetter newColumnGetter(JdbcInputConnection con, PluginTask task, JdbcColumn column, JdbcColumnOption option) { ColumnGetter getter = super.newColumnGetter(con, task, column, option); // incremental loading wrapper switch (column.getTypeName()) { case "timestamptz": return new TimestampWithTimeZoneIncrementalHandler(getter); case "timestamp": return new TimestampWithoutTimeZoneIncrementalHandler(getter); default: return getter; } } }
@Override public ColumnGetter newColumnGetter(JdbcInputConnection con, AbstractJdbcInputPlugin.PluginTask task, JdbcColumn column, JdbcColumnOption option) { ColumnGetter getter = super.newColumnGetter(con, task, column, option); switch (column.getTypeName()) { case "DATE": return new TimestampWithoutTimeZoneIncrementalHandler(getter); case "TIMESTAMP": return new TimestampWithoutTimeZoneIncrementalHandler(getter); default: return getter; } }
public ColumnGetter newColumnGetter(JdbcInputConnection con, PluginTask task, JdbcColumn column, JdbcColumnOption option) { return newColumnGetter(con, task, column, option, option.getValueType()); }
@Override public void getAndSet(ResultSet from, int fromIndex, Column toColumn) throws SQLException { // sniff the value Timestamp timestamp = from.getTimestamp(fromIndex); if (timestamp != null) { this.dateTime = timestamp; } super.getAndSet(from, fromIndex, toColumn); }
@Override protected String sqlTypeToValueType(JdbcColumn column, int sqlType) { switch(column.getTypeName()) { case "json": case "jsonb": return "json"; case "hstore": case "array": // array & hstore is converted to string by default return "string"; default: return super.sqlTypeToValueType(column, sqlType); } } }
@Override public void jsonColumn(Column column) { Value v; try { v = jsonParser.parse(value); } catch (JsonParseException e) { super.jsonColumn(column); return; } to.setJson(column, v); }
protected ColumnGetterFactory newColumnGetterFactory(PageBuilder pageBuilder, DateTimeZone dateTimeZone) { return new ColumnGetterFactory(pageBuilder, dateTimeZone); }
public void accept(List<ColumnGetter> getters) throws SQLException { for (int i = 0; i < columnIndexes.size(); i++) { lastValues[i] = getters.get(columnIndexes.get(i)).encodeToJson(); } }
@Override public void doubleColumn(Column column) { double d; try { d = Double.parseDouble(value); } catch (NumberFormatException e) { super.doubleColumn(column); return; } to.setDouble(column, d); }
@Override public JsonNode encodeToJson() { throw new DataException(String.format(ENGLISH, "Column type '%s' set at incremental_columns option is not supported", getToType())); }
@Override public void longColumn(Column column) { long l; try { l = Long.parseLong(value); } catch (NumberFormatException e) { super.longColumn(column); return; } to.setLong(column, l); }
protected void prepareParameters(PreparedStatement stmt, List<ColumnGetter> getters, List<JdbcLiteral> parameters) throws SQLException { for (int i = 0; i < parameters.size(); i++) { JdbcLiteral literal = parameters.get(i); ColumnGetter getter = getters.get(literal.getColumnIndex()); int index = i + 1; // JDBC column index begins from 1 getter.decodeFromJsonTo(stmt, index, literal.getValue()); } }
@Override public ColumnGetter newColumnGetter(JdbcInputConnection con, AbstractJdbcInputPlugin.PluginTask task, JdbcColumn column, JdbcColumnOption option) { ColumnGetter getter = super.newColumnGetter(con, task, column, option); switch (column.getTypeName()) { case "datetime": return new TimestampWithoutTimeZoneIncrementalHandler(getter); default: return getter; } }
@Override public void getAndSet(ResultSet from, int fromIndex, Column toColumn) throws SQLException { Timestamp timestamp = from.getTimestamp(fromIndex); if (timestamp != null) { epochSecond = timestamp.getTime() / 1000; nano = timestamp.getNanos(); } super.getAndSet(from, fromIndex, toColumn); }
@Override public void jsonColumn(Column column) { Value v; try { v = jsonParser.parse(value); } catch (JsonParseException e) { super.jsonColumn(column); return; } to.setJson(column, v); }
@Override public void getAndSet(ResultSet from, int fromIndex, Column toColumn) throws SQLException { // sniff the value Timestamp timestamp = from.getTimestamp(fromIndex); if (timestamp != null) { epochSecond = timestamp.getTime() / 1000; nano = timestamp.getNanos(); } super.getAndSet(from, fromIndex, toColumn); }