private static UnsupportedOperationException unsupportedOperationException(JdbcColumn column) { throw new UnsupportedOperationException( String.format(ENGLISH, "Unsupported type %s (sqlType=%d) of '%s' column. Please add '%s: {value_type: string}' to 'column_options: {...}' option to convert the values to strings, or exclude the column from 'select:' option", column.getTypeName(), column.getSqlType(), column.getName(), column.getName())); } }
private List<ColumnGetter> newColumnGetters(JdbcInputConnection con, PluginTask task, JdbcSchema querySchema, PageBuilder pageBuilder) throws SQLException { ColumnGetterFactory factory = newColumnGetterFactory(pageBuilder, task.getDefaultTimeZone()); ImmutableList.Builder<ColumnGetter> getters = ImmutableList.builder(); for (JdbcColumn c : querySchema.getColumns()) { JdbcColumnOption columnOption = columnOptionOf(task.getColumnOptions(), task.getDefaultColumnOptions(), c, factory.getJdbcType(c.getSqlType())); getters.add(factory.newColumnGetter(con, task, c, columnOption)); } return getters.build(); }
@Override public ColumnGetter newColumnGetter(JdbcInputConnection con, PluginTask task, JdbcColumn column, JdbcColumnOption option) { if (column.getTypeName().equals("hstore") && getToType(option) == Types.JSON) { // converting hstore to json needs a special handling return new HstoreToJsonColumnGetter(to, Types.JSON); } if (column.getSqlType() == java.sql.Types.ARRAY) { return new ArrayColumnGetter(to, getToType(option)); } if ("uuid".equals(column.getTypeName())) { return new StringColumnGetter(to, getToType(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; } }
for (int i = 0; i < querySchema.getCount(); i++) { JdbcColumn column = querySchema.getColumn(i); JdbcColumnOption columnOption = columnOptionOf(task.getColumnOptions(), task.getDefaultColumnOptions(), column, factory.getJdbcType(column.getSqlType())); columns.add(new Column(i, column.getName(),
case "coalesce": return newColumnGetter(con, task, column, option, sqlTypeToValueType(column, column.getSqlType())); case "long": return new LongColumnGetter(to, toType);