/** * Returns the specified type information for the given field index. * * @param fieldIndex the index of the field */ public Optional<InternalType> getFieldType(int fieldIndex) { if (fieldIndex < 0 || fieldIndex >= columns.length) { return Optional.empty(); } return Optional.of(columns[fieldIndex].internalType()); }
/** * Returns the specified name for the given field index. * * @param fieldIndex the index of the field */ public Optional<String> getFieldName(int fieldIndex) { if (fieldIndex < 0 || fieldIndex >= columns.length) { return Optional.empty(); } return Optional.of(columns[fieldIndex].name()); }
public Builder column(String name, InternalType type) { columns.add(new Column(name, type)); return this; }
@Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } Column other = (Column) o; return name.equals(other.name) && type.equals(other.internalType()) && isNullable == other.isNullable(); } }
@Override public String toString() { final StringBuilder sb = new StringBuilder(); sb.append("root\n"); for (int i = 0; i < columns.length; i++) { sb.append(" |-- name: ").append(columns[i].name()).append("\n"); sb.append(" |-- type: ").append(columns[i].internalType()).append("\n"); sb.append(" |-- isNullable: ").append(columns[i].isNullable()).append("\n"); } if (primaryKeys.length > 0) { sb.append("primary keys\n"); sb.append(" |-- ").append(String.join(", ", primaryKeys)).append("\n"); } if (uniqueKeys.length > 0) { sb.append("unique keys\n"); for (int i = 0; i < uniqueKeys.length; i++) { sb.append(" |-- ").append(String.join(", ", uniqueKeys[i])).append("\n"); } } if (indexes.length > 0) { sb.append("indexes\n"); for (int i = 0; i < indexes.length; i++) { sb.append(" |-- ").append(String.join(", ", indexes[i])).append("\n"); } } return sb.toString(); }
/** * Create Hive columns from Flink TableSchema. */ private static List<FieldSchema> createHiveColumns(TableSchema schema) { List<FieldSchema> columns = new ArrayList<>(schema.getColumns().length); for (Column column : schema.getColumns()) { FieldSchema fieldSchema = new FieldSchema(column.name(), convert(column.internalType()), null); columns.add(fieldSchema); } return columns; }
/** * Returns all field nullables as an array. */ public boolean[] getFieldNullables() { boolean[] nulls = new boolean[columns.length]; for (int i = 0; i < columns.length; i++) { nulls[i] = columns[i].isNullable(); } return nulls; }
/** * @deprecated Use {@link TableSchema#getFieldType(String)} instead. Can be dropped after 1.7. */ @Deprecated public Optional<InternalType> getType(String fieldName) { if (columnNameToColumnIndex.containsKey(fieldName)) { return Optional.of(columns[columnNameToColumnIndex.get(fieldName)].internalType()); } return Optional.empty(); }
/** * @deprecated Use {@link TableSchema#getFieldName(int)} instead. Can be dropped after 1.7. */ @Deprecated public String getColumnName(int fieldIndex) { Preconditions.checkArgument(fieldIndex >= 0 && fieldIndex < columns.length); return columns[fieldIndex].name(); }
public Builder column(String name, InternalType type, boolean nullable) { columns.add(new Column(name, type, nullable)); return this; }
/** * Returns the specified type information for the given field name. * * @param fieldName the name of the field */ public Optional<InternalType> getFieldType(String fieldName) { if (columnNameToColumnIndex.containsKey(fieldName)) { return Optional.of(columns[columnNameToColumnIndex.get(fieldName)].internalType()); } return Optional.empty(); }
for (int i = 0; i < this.columns.length; i++) { Preconditions.checkNotNull(columns[i]); final String fieldName = this.columns[i].name(); columnNameToColumnIndex.put(fieldName, i);
/** * Add a field with name and type. The call order of this method determines the order * of fields in the schema. */ @Deprecated public Builder field(String name, InternalType type) { columns.add(new Column(name, type)); return this; }
/** * @deprecated Use {@link TableSchema#getFieldType(int)} instead. Can be dropped after 1.7. */ @Deprecated public InternalType getType(int fieldIndex) { Preconditions.checkArgument(fieldIndex >= 0 && fieldIndex < columns.length); return columns[fieldIndex].internalType(); }
@Deprecated public Builder field(String name, InternalType type, boolean nullable) { columns.add(new Column(name, type, nullable)); return this; }
private static Column[] validate(String[] names, InternalType[] types, boolean[] nulls) { if (names.length != types.length) { throw new TableException( "Number of column indexes and column names must be equal.\n" + "Column names count is [" + names.length + "]\n" + "Column types count is [" + types.length + "]\n" + "Column names: " + Arrays.toString(names) + "\n" + "Column types: " + Arrays.toString(types) ); } if (names.length != nulls.length) { throw new TableException( "Number of column names and nullabilities must be equal.\n" + "Column names count is: " + names.length + "\n" + "Column nullabilities count is: " + nulls.length + "\n" + "List of all field names: " + Arrays.toString(names) + "\n" + "List of all field nullabilities: " + Arrays.toString(nulls) ); } List<Column> columns = new ArrayList<>(); for (int i = 0; i < names.length; i++) { columns.add(new Column(names[i], types[i], nulls[i])); } return columns.toArray(new Column[columns.size()]); }