public static UTF8Row from(Creator creator, Row row) {
        List<ColumnSchema> csList = creator.originalSchema;
        BytePiece bp = new BytePiece();
        creator.startRow();
        for (int id = 0; id < csList.size(); id++) {
            creator.onColumnId(id);

            ColumnSchema cs = csList.get(id);
            switch (cs.getDataType()) {
                case ColumnType.INT:
                    creator.onIntValue(row.getInt(id));
                    break;
                case ColumnType.LONG:
                    creator.onLongValue(row.getLong(id));
                    break;
                case ColumnType.FLOAT:
                    creator.onFloatValue(row.getFloat(id));
                    break;
                case ColumnType.DOUBLE:
                    creator.onDoubleValue(row.getDouble(id));
                    break;
                case ColumnType.STRING:
                    row.getRaw(id, bp);
                    creator.onStringValue(bp.base, bp.addr, bp.len);
                    break;
                default:
                    throw new IllegalStateException("Illegal type: " + cs.getDataType());
            }
        }
        return creator.endRow();
    }
The aproximately memeory usage of this object. Currently only return the raw row data size.
indexr-segment/src/main/java/io/indexr/segment/rt/UTF8Row.java