in cassandra-four-zero/src/main/java/org/apache/cassandra/bridge/CassandraBridgeImplementation.java [571:614]
public synchronized void writeSSTable(Partitioner partitioner,
String keyspace,
String table,
Path directory,
String createStatement,
String insertStatement,
String updateStatement,
boolean upsert,
Set<CqlField.CqlUdt> udts,
Consumer<Writer> writer)
{
CQLSSTableWriter.Builder builder = CQLSSTableWriter.builder()
.inDirectory(directory.toFile())
.forTable(createStatement)
.withPartitioner(getPartitioner(partitioner))
.using(upsert ? updateStatement : insertStatement)
.withBufferSizeInMB(128);
for (CqlField.CqlUdt udt : udts)
{
// Add user-defined types to CQL writer
builder.withType(udt.createStatement(keyspace));
}
// TODO: Remove me once CQLSSTableWriter.Builder synchronize on schema (see CASSANDRA-TBD)
// build update schema, we need to synchornize
try (CQLSSTableWriter ssTable = CassandraSchema.apply(s -> builder.build()))
{
writer.accept(values -> {
try
{
ssTable.addRow(values);
}
catch (IOException exception)
{
throw new RuntimeException(exception);
}
});
}
catch (IOException exception)
{
throw new RuntimeException(exception);
}
}