package edu.brown.hstore;
import org.voltdb.ProcInfo;
import org.voltdb.SQLStmt;
import org.voltdb.VoltProcedure;
import org.voltdb.VoltTable;
import edu.brown.benchmark.ycsb.YCSBConstants;
/**
* Select Blaster Procedure
*/
@ProcInfo(
singlePartition=true
)
public class SelectBlaster extends VoltProcedure {
public final SQLStmt get = new SQLStmt(
"SELECT * FROM " + YCSBConstants.TABLE_NAME + " WHERE ycsb_key = ?"
);
public long run(long keys0[], long keys1[], long keys2[]) {
long keys[][] = { keys0, keys1, keys2 };
for (int i = 1; i < keys.length; i++) {
assert(keys[0].length == keys[i].length);
} // FOR
long start = System.nanoTime();
for (int i = 0; i < keys0.length; i++) {
for (int j = 0; j < keys.length; j++) {
voltQueueSQL(get, keys[j][i]);
} // FOR
VoltTable vt[] = voltExecuteSQL();
assert(vt.length == keys.length);
for (int j = 0; j < keys.length; j++) {
boolean adv = vt[j].advanceRow();
assert(adv);
assert(keys[j][i] == vt[j].getLong(0));
} // FOR
} // FOR
return (System.nanoTime() - start);
}
}