public FieldType getMapValueType() { if (!isMap()) { throw new IllegalStateException("type is not map"); } return values[ordinal() - 20]; }
public boolean isArray() { return ordinal() > 9 && !isMap(); }
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)); } } }
.collect(Collectors.toList()); if (type.isMap()) { return ((Map) value).entrySet().stream() .collect(Collectors.toMap(new Function<Map.Entry, String>() {
return fieldType.getArrayElementType() + "[]"; if (fieldType.isMap()) { return "jsonb";
String typeName = toPostgresqlPrimitiveTypeName(type.getArrayElementType()); ps.setArray(i + 1, connection.createArrayOf(typeName, ((List) value).toArray())); } else if (type.isMap()) { PGobject jsonObject = new PGobject(); jsonObject.setType("jsonb");
Array array = resultSet.getArray(columnIndex); object = array == null ? null : array.getArray(); } else if (type.isMap()) { PGobject pgObject = (PGobject) resultSet.getObject(columnIndex); if (pgObject == null) {
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());
if (fieldType.isMap()) { if (value instanceof Map) { PGobject jsonObject = new PGobject();
return toSql(type.getArrayElementType()) + "[]"; if (type.isMap()) {
public String getPrettyName() { if (isArray()) { return "ARRAY<" + getArrayElementType().toString() + ">"; } if (isMap()) { return "MAP<STRING, " + getMapValueType().toString() + ">"; } return toString(); } }
if (type.isMap()) { return getMap(type.getMapValueType(), jp.getValueAsString());
} else if (fieldType.isMap()) { PGobject pgObject = (PGobject) resultSet.getObject(i + 1); if (resultSet.wasNull()) return NullNode.getInstance();
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"); } }
} else if (type.isMap()) { builder.append("map("); appendValue(builder, ((Map) value).keySet(), FieldType.ARRAY_STRING);
return new ArrayType(toType(type.getArrayElementType())); if (type.isMap()) { return MAP.createType(defaultTypeManager, ImmutableList.of(TypeParameter.of(VarcharType.VARCHAR), TypeParameter.of(toType(type.getMapValueType()))));
return Schema.create(Schema.Type.LONG); default: if (type.isMap()) { Schema union = Schema.createUnion(ImmutableList.of(Schema.create(Schema.Type.NULL), getAvroSchema(type.getMapValueType()))); return Schema.createMap(union);