public FieldType getArrayElementType() { if (!isArray()) { throw new IllegalStateException("type is not array"); } return values[ordinal() - 10]; }
public FieldType convertToMapValueType() { if (isMap()) { throw new IllegalStateException("type is already a map"); } if (isArray()) { throw new IllegalStateException("type is already a array"); } return values[ordinal() + 20]; }
private void write(FieldType type, JsonGenerator generator, Object value) throws IOException { switch (type) { case STRING: case BOOLEAN: case LONG: case INTEGER: case DECIMAL: case DOUBLE: case TIMESTAMP: case TIME: case DATE: generator.writeString(value.toString()); break; default: if (type.isMap()) { generator.writeNull(); } else if (type.isArray()) { generator.writeStartArray(); for (Object item : ((List) value)) { generator.writeString(item.toString()); } generator.writeEndArray(); } else { throw new IllegalStateException(format("type %s is not supported.", type)); } } }
return (byte[]) value; default: if (type.isArray()) { return ((List) value).stream().map(e -> getAvroValue(e, type.getArrayElementType())) .collect(Collectors.toList());
break; default: if (type.isArray()) { String typeName = toPostgresqlPrimitiveTypeName(type.getArrayElementType()); ps.setArray(i + 1, connection.createArrayOf(typeName, ((List) value).toArray()));
if (type.isArray()) { Array array = resultSet.getArray(columnIndex); object = array == null ? null : array.getArray();
return null; if (fieldType.isArray()) { if (value.isArray()) { FieldType arrayType = fieldType.getArrayElementType();
return "DOUBLE PRECISION"; default: if (type.isArray()) { return toSql(type.getArrayElementType()) + "[]";
return format("\"%1$s\": '|| COALESCE(cast(%1$s as varchar), 'null')||'", field.getName()); if (field.getType().isArray() || field.getType().isMap()) { return format("\"%1$s\": '|| json_format(try_cast(%1$s as json)) ||'", field.getName());
break; default: if (fieldType.isArray()) { ArrayNode jsonNodes = JsonHelper.jsonArray(); Array array = resultSet.getArray(i);
public String getPrettyName() { if (isArray()) { return "ARRAY<" + getArrayElementType().toString() + ">"; } if (isMap()) { return "MAP<STRING, " + getMapValueType().toString() + ">"; } return toString(); } }
return getMap(type.getMapValueType(), jp.getValueAsString()); if (type.isArray()) { return getArray(type.getArrayElementType(), jp.getValueAsString());
public static String toSql(FieldType type) { switch (type) { case LONG: return StandardTypes.BIGINT; case STRING: return StandardTypes.VARCHAR; case BINARY: return StandardTypes.VARBINARY; case DECIMAL: case INTEGER: case BOOLEAN: case DATE: case TIME: case DOUBLE: case TIMESTAMP: return type.name(); default: if (type.isArray()) { return "ARRAY<" + toSql(type.getArrayElementType()) + ">"; } if (type.isMap()) { return "MAP<VARCHAR, " + toSql(type.getMapValueType()) + ">"; } throw new IllegalStateException("sql type couldn't converted to fieldtype"); } }
public static String toSql(FieldType type) { switch (type) { case INTEGER: return "INT"; case DECIMAL: return "DECIMAL"; case LONG: return "BIGINT"; case STRING: return "VARCHAR"; case BINARY: return "VARBINARY"; case BOOLEAN: case DATE: case TIME: case TIMESTAMP: return type.name(); case DOUBLE: return "DOUBLE"; default: if (type.isArray()) { return "ARRAY<" + toSql(type.getArrayElementType()) + ">"; } if (type.isMap()) { return "MAP<VARCHAR, " + toSql(type.getMapValueType()) + ">"; } throw new IllegalStateException("sql type couldn't converted to fieldtype"); } }
break; default: if (type.isArray()) { builder.append("array ["); for (Object item : ((Collection) value)) {
return VarbinaryType.VARBINARY; default: if (type.isArray()) { return new ArrayType(toType(type.getArrayElementType()));
return Schema.createMap(union); if (type.isArray()) { Schema union = Schema.createUnion(ImmutableList.of(Schema.create(Schema.Type.NULL), getAvroSchema(type.getArrayElementType()))); return Schema.createArray(union);