in holo-e2e-performance-tool/src/main/java/com/alibaba/hologres/performace/client/PutTest.java [125:195]
protected void fillRecord(Record record, long pk, TableSchema schema, Random random,
List<String> writeColumns, boolean enableRandomPartialCol) {
Record put = record;
for (String columnName : writeColumns) {
int columnIndex = schema.getColumnIndex(columnName);
Column column = schema.getColumn(columnIndex);
long value = pk;
if (!schema.isPrimaryKey(columnName) && enableRandomPartialCol) {
int randNum = random.nextInt(3);
if (randNum == 0) {
continue;
}
}
Set<String> distributionKeys = new HashSet<>(Arrays.asList(schema.getDistributionKeys()));
if (conf.prefixPk && schema.isPrimaryKey(columnName) && distributionKeys.contains(columnName)) {
value = (pk - 1) / conf.recordCountPerPrefix;
}
if (schema.getPartitionIndex() == columnIndex) {
if (conf.partition) {
value = random.nextInt(conf.partitionCount + conf.partitionRatio);
if (value > conf.partitionCount) {
value = 0;
}
} else {
value = 0;
}
}
switch (column.getType()) {
case Types.DOUBLE:
put.setObject(columnIndex, value);
break;
case Types.NUMERIC:
put.setObject(columnIndex, new BigDecimal(value));
case Types.INTEGER:
case Types.BIGINT:
case Types.SMALLINT:
put.setObject(columnIndex, value);
break;
case Types.VARCHAR:
if (columnIndex == schema.getPartitionIndex()) {
put.setObject(columnIndex, String.valueOf(value));
} else {
put.setObject(columnIndex, Util.alignWithColumnSize(value, conf.columnSize));
}
break;
case Types.BINARY:
byte[] bytes = new byte[conf.columnSize];
random.nextBytes(bytes);
put.setObject(columnIndex, bytes);
break;
case Types.TIMESTAMP:
if (conf.fillTimestampWithNow) {
put.setObject(columnIndex, new Date());
} else {
put.setObject(columnIndex, new Date(value));
}
break;
case Types.DATE:
if (conf.fillTimestampWithNow) {
put.setObject(columnIndex, new java.sql.Date(System.currentTimeMillis()));
} else {
put.setObject(columnIndex, new java.sql.Date(value));
}
break;
default:
throw new RuntimeException(
"unknow type " + column.getType() + "," + column.getTypeName());
}
}
}