in oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/postgresql/PostgreSQLTableInstaller.java [49:75]
protected String getColumnDefinition(ModelColumn column, Class<?> type, Type genericType) {
final String storageName = column.getColumnName().getStorageName();
if (Integer.class.equals(type) || int.class.equals(type) || Layer.class.equals(type)) {
return storageName + " INT";
} else if (Long.class.equals(type) || long.class.equals(type)) {
return storageName + " BIGINT";
} else if (Double.class.equals(type) || double.class.equals(type)) {
return storageName + " DOUBLE PRECISION";
} else if (String.class.equals(type)) {
return storageName + " VARCHAR(" + column.getLength() + ")";
} else if (StorageDataComplexObject.class.isAssignableFrom(type)) {
return storageName + " VARCHAR(20000)";
} else if (byte[].class.equals(type)) {
return storageName + " TEXT";
} else if (JsonObject.class.equals(type)) {
if (column.getLength() > 16383) {
return storageName + " TEXT";
} else {
return storageName + " VARCHAR(" + column.getLength() + ")";
}
} else if (List.class.isAssignableFrom(type)) {
final Type elementType = ((ParameterizedType) genericType).getActualTypeArguments()[0];
return getColumnDefinition(column, (Class<?>) elementType, elementType);
} else {
throw new IllegalArgumentException("Unsupported data type: " + type.getName());
}
}