mirror of
https://github.com/nosqlbench/nosqlbench.git
synced 2025-02-25 18:55:28 -06:00
additional improvements to cqld4 driver
This commit is contained in:
@@ -3,8 +3,8 @@ package io.nosqlbench.adapter.cqld4;
|
||||
import com.datastax.oss.driver.api.core.CqlSession;
|
||||
import io.nosqlbench.adapter.cqld4.opdispensers.CqlD4PreparedBatchOpDispenser;
|
||||
import io.nosqlbench.adapter.cqld4.opdispensers.Cqld4BatchStatementDispenser;
|
||||
import io.nosqlbench.adapter.cqld4.opdispensers.Cqld4PreparedOpDispenser;
|
||||
import io.nosqlbench.adapter.cqld4.opdispensers.Cqld4SimpleCqlStatementDispenser;
|
||||
import io.nosqlbench.adapter.cqld4.opdispensers.Cqld4PreparedStmtDispenser;
|
||||
import io.nosqlbench.adapter.cqld4.opdispensers.Cqld4SimpleCqlStmtDispenser;
|
||||
import io.nosqlbench.engine.api.activityimpl.OpDispenser;
|
||||
import io.nosqlbench.engine.api.activityimpl.OpMapper;
|
||||
import io.nosqlbench.engine.api.activityimpl.uniform.DriverSpaceCache;
|
||||
@@ -32,11 +32,11 @@ public class Cqld4OpMapper implements OpMapper<Cqld4Op> {
|
||||
if (prepared && batch) {
|
||||
return new CqlD4PreparedBatchOpDispenser(session, cmd, cfg);
|
||||
} else if (prepared) {
|
||||
return new Cqld4PreparedOpDispenser(session, cmd, cfg);
|
||||
return new Cqld4PreparedStmtDispenser(session, cmd);
|
||||
} else if (batch) {
|
||||
return new Cqld4BatchStatementDispenser(session, cmd, cfg);
|
||||
} else {
|
||||
return new Cqld4SimpleCqlStatementDispenser(session, cmd, cfg);
|
||||
return new Cqld4SimpleCqlStmtDispenser(session, cmd, cfg);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
package io.nosqlbench.adapter.cqld4;
|
||||
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
/**
|
||||
* Maintain a cache of objects to use in a CQLD4 context.
|
||||
*/
|
||||
public class Cqld4SpaceCache {
|
||||
private final ConcurrentHashMap<String, Cqld4Space> clientscopes = new ConcurrentHashMap<>();
|
||||
private final Cqld4DriverAdapter adapter;
|
||||
|
||||
public Cqld4SpaceCache(Cqld4DriverAdapter adapter) {
|
||||
this.adapter = adapter;
|
||||
}
|
||||
|
||||
public Cqld4Space getSpace(String name) {
|
||||
return clientscopes.computeIfAbsent(name, newName -> {
|
||||
return new Cqld4Space(adapter);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -7,36 +7,28 @@ import io.nosqlbench.adapter.cqld4.Cqld4Op;
|
||||
import io.nosqlbench.adapter.cqld4.optypes.Cqld4PreparedStatement;
|
||||
import io.nosqlbench.engine.api.activityimpl.OpDispenser;
|
||||
import io.nosqlbench.engine.api.templating.ParsedCommand;
|
||||
import io.nosqlbench.nb.api.config.standard.NBConfiguration;
|
||||
import io.nosqlbench.virtdata.core.templates.ParsedTemplate;
|
||||
|
||||
import java.util.function.LongFunction;
|
||||
|
||||
public class Cqld4PreparedOpDispenser implements OpDispenser<Cqld4Op> {
|
||||
public class Cqld4PreparedStmtDispenser implements OpDispenser<Cqld4Op> {
|
||||
|
||||
private final CqlSession session;
|
||||
private final ParsedCommand cmd;
|
||||
private final NBConfiguration cfg;
|
||||
|
||||
private final LongFunction<Object[]> varbinder;
|
||||
private final PreparedStatement preparedStmt;
|
||||
|
||||
public Cqld4PreparedOpDispenser(CqlSession session, ParsedCommand cmd, NBConfiguration cfg) {
|
||||
public Cqld4PreparedStmtDispenser(CqlSession session, ParsedCommand cmd) {
|
||||
|
||||
this.session = session;
|
||||
this.cmd = cmd;
|
||||
this.cfg = cfg;
|
||||
// if (cmd.isDefinedDynamic("stmt")) {
|
||||
// throw new OpConfigError("You must have a static template to create prepared statements. (Do not make the stmt field a binding itself)");
|
||||
// }
|
||||
|
||||
ParsedTemplate parsed = cmd.getStmtAsTemplate().orElseThrow();
|
||||
String preparedQueryString = parsed.getPositionalStatement(s -> "?");
|
||||
|
||||
varbinder = cmd.newArrayBinderFromBindPoints(parsed.getBindPoints());
|
||||
preparedStmt = session.prepare(preparedQueryString);
|
||||
|
||||
String preparedQueryString = parsed.getPositionalStatement(s -> "?");
|
||||
preparedStmt = session.prepare(preparedQueryString);
|
||||
}
|
||||
|
||||
// TODO: Explain in the dev guide that apply in the op dispenser should do all the "bind" level stuff
|
||||
@Override
|
||||
public Cqld4Op apply(long value) {
|
||||
Object[] parameters = varbinder.apply(value);
|
||||
@@ -8,13 +8,13 @@ import io.nosqlbench.engine.api.activityimpl.OpDispenser;
|
||||
import io.nosqlbench.engine.api.templating.ParsedCommand;
|
||||
import io.nosqlbench.nb.api.config.standard.NBConfiguration;
|
||||
|
||||
public class Cqld4SimpleCqlStatementDispenser implements OpDispenser<Cqld4Op> {
|
||||
public class Cqld4SimpleCqlStmtDispenser implements OpDispenser<Cqld4Op> {
|
||||
|
||||
private final CqlSession session;
|
||||
private final ParsedCommand cmd;
|
||||
private final NBConfiguration cfg;
|
||||
|
||||
public Cqld4SimpleCqlStatementDispenser(CqlSession session, ParsedCommand cmd, NBConfiguration cfg) {
|
||||
public Cqld4SimpleCqlStmtDispenser(CqlSession session, ParsedCommand cmd, NBConfiguration cfg) {
|
||||
this.session = session;
|
||||
this.cmd = cmd;
|
||||
this.cfg = cfg;
|
||||
Reference in New Issue
Block a user