public String getColumnName(int i) { return columns.get(i).getName(); }
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())); } }
public Optional<Integer> findColumn(String caseInsensitiveName) { // find by case sensitive first for (int i = 0; i < columns.size(); i++) { if (getColumn(i).getName().equals(caseInsensitiveName)) { return Optional.of(i); } } // find by case insensitive for (int i = 0; i < columns.size(); i++) { if (getColumn(i).getName().equalsIgnoreCase(caseInsensitiveName)) { return Optional.of(i); } } return Optional.absent(); } }
private static JdbcColumnOption columnOptionOf(Map<String, JdbcColumnOption> columnOptions, Map<String, JdbcColumnOption> defaultColumnOptions, JdbcColumn targetColumn, String targetColumnSQLType) { JdbcColumnOption columnOption = columnOptions.get(targetColumn.getName()); if (columnOption == null) { String foundName = null; for (Map.Entry<String, JdbcColumnOption> entry : columnOptions.entrySet()) { if (entry.getKey().equalsIgnoreCase(targetColumn.getName())) { if (columnOption != null) { throw new ConfigException(String.format("Cannot specify column '%s' because both '%s' and '%s' exist in column_options.", targetColumn.getName(), foundName, entry.getKey())); } foundName = entry.getKey(); columnOption = entry.getValue(); } } } return Optional .fromNullable(columnOption) .or(Optional.fromNullable(defaultColumnOptions.get(targetColumnSQLType))) .or( // default column option new Supplier<JdbcColumnOption>() { public JdbcColumnOption get() { return Exec.newConfigSource().loadConfig(JdbcColumnOption.class); } }); }
case "DATETIME": case "TIMESTAMP": int index = task.getQuerySchema().findColumn(column.getName()).get(); if (!task.getIncremental() || !task.getIncrementalColumnIndexes().contains(index)) { return getter;
JdbcColumnOption columnOption = columnOptionOf(task.getColumnOptions(), task.getDefaultColumnOptions(), column, factory.getJdbcType(column.getSqlType())); columns.add(new Column(i, column.getName(), factory.newColumnGetter(con, task, column, columnOption).getToType()));
default: throw new ConfigException(String.format(ENGLISH, "Unknown value_type '%s' for column '%s'", option.getValueType(), column.getName()));