use of com.scalar.db.io.DataType in project scalardb by scalar-labs.
the class StorageSinglePartitionKeyIntegrationTestBase method createTables.
private void createTables() throws ExecutionException {
Map<String, String> options = getCreateOptions();
admin.createNamespace(namespace, true, options);
for (DataType partitionKeyType : partitionKeyTypes) {
createTable(partitionKeyType, options);
}
}
use of com.scalar.db.io.DataType in project scalardb by scalar-labs.
the class ResultInterpreter method getValue.
@Nullable
private Value<?> getValue(String name, ResultSet resultSet) throws SQLException {
Value<?> ret;
DataType dataType = metadata.getColumnDataType(name);
switch(dataType) {
case BOOLEAN:
ret = new BooleanValue(name, resultSet.getBoolean(name));
break;
case INT:
ret = new IntValue(name, resultSet.getInt(name));
break;
case BIGINT:
ret = new BigIntValue(name, resultSet.getLong(name));
break;
case FLOAT:
// To handle Float.MAX_VALUE in MySQL, we need to get the value as double, then cast it to
// float
ret = new FloatValue(name, (float) resultSet.getDouble(name));
break;
case DOUBLE:
ret = new DoubleValue(name, resultSet.getDouble(name));
break;
case TEXT:
ret = new TextValue(name, resultSet.getString(name));
break;
case BLOB:
ret = new BlobValue(name, resultSet.getBytes(name));
break;
default:
throw new AssertionError();
}
if (resultSet.wasNull()) {
return null;
}
return ret;
}
use of com.scalar.db.io.DataType in project scalardb by scalar-labs.
the class DistributedStorageMultipleClusteringKeyScanIntegrationTestBase method executeInParallel.
private void executeInParallel(TestForFirstClusteringKeyScan test) throws java.util.concurrent.ExecutionException, InterruptedException {
List<Callable<Void>> testCallables = new ArrayList<>();
for (DataType firstClusteringKeyType : clusteringKeyTypes.keySet()) {
for (Order firstClusteringOrder : Order.values()) {
testCallables.add(() -> {
truncateTable(firstClusteringKeyType, firstClusteringOrder, DataType.INT, Order.ASC);
List<ClusteringKey> clusteringKeys = prepareRecords(firstClusteringKeyType, firstClusteringOrder, DataType.INT, Order.ASC);
test.execute(clusteringKeys, firstClusteringKeyType, firstClusteringOrder);
return null;
});
}
}
executeInParallel(testCallables);
}
use of com.scalar.db.io.DataType in project scalardb by scalar-labs.
the class DistributedStorageMultipleClusteringKeyScanIntegrationTestBase method executeInParallel.
private void executeInParallel(TestForSecondClusteringKeyScan test) throws java.util.concurrent.ExecutionException, InterruptedException {
List<Callable<Void>> testCallables = new ArrayList<>();
for (DataType firstClusteringKeyType : clusteringKeyTypes.keySet()) {
for (DataType secondClusteringKeyType : clusteringKeyTypes.get(firstClusteringKeyType)) {
for (Order firstClusteringOrder : Order.values()) {
for (Order secondClusteringOrder : Order.values()) {
testCallables.add(() -> {
truncateTable(firstClusteringKeyType, firstClusteringOrder, secondClusteringKeyType, secondClusteringOrder);
List<ClusteringKey> clusteringKeys = prepareRecords(firstClusteringKeyType, firstClusteringOrder, secondClusteringKeyType, secondClusteringOrder);
test.execute(clusteringKeys, firstClusteringKeyType, firstClusteringOrder, secondClusteringKeyType, secondClusteringOrder);
return null;
});
}
}
}
}
executeInParallel(testCallables);
}
use of com.scalar.db.io.DataType in project scalardb by scalar-labs.
the class DistributedStorageMultipleClusteringKeyScanIntegrationTestBase method createTables.
private void createTables() throws java.util.concurrent.ExecutionException, InterruptedException {
List<Callable<Void>> testCallables = new ArrayList<>();
Map<String, String> options = getCreateOptions();
for (DataType firstClusteringKeyType : clusteringKeyTypes.keySet()) {
Callable<Void> testCallable = () -> {
admin.createNamespace(getNamespaceName(firstClusteringKeyType), true, options);
for (DataType secondClusteringKeyType : clusteringKeyTypes.get(firstClusteringKeyType)) {
for (Order firstClusteringOrder : Order.values()) {
for (Order secondClusteringOrder : Order.values()) {
createTable(firstClusteringKeyType, firstClusteringOrder, secondClusteringKeyType, secondClusteringOrder, options);
}
}
}
return null;
};
testCallables.add(testCallable);
}
// We firstly execute the first one and then the rest. This is because the first table creation
// creates the metadata table, and this process can't be handled in multiple threads/processes
// at the same time.
executeInParallel(testCallables.subList(0, 1));
executeInParallel(testCallables.subList(1, testCallables.size()));
}
Aggregations