Search in sources :

Example 21 with IntValue

use of com.scalar.db.io.IntValue in project scalardb by scalar-labs.

the class ValueBinderTest method visit_IntValueAcceptCalled_ShouldCallSetInt.

@Test
public void visit_IntValueAcceptCalled_ShouldCallSetInt() {
    // Arrange
    IntValue value = new IntValue(ANY_NAME, ANY_INT);
    ValueBinder binder = new ValueBinder(bound);
    // Act
    value.accept(binder);
    // Assert
    verify(bound).setInt(0, ANY_INT);
}
Also used : IntValue(com.scalar.db.io.IntValue) BigIntValue(com.scalar.db.io.BigIntValue) Test(org.junit.Test)

Example 22 with IntValue

use of com.scalar.db.io.IntValue 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;
}
Also used : DoubleValue(com.scalar.db.io.DoubleValue) TextValue(com.scalar.db.io.TextValue) BooleanValue(com.scalar.db.io.BooleanValue) DataType(com.scalar.db.io.DataType) FloatValue(com.scalar.db.io.FloatValue) IntValue(com.scalar.db.io.IntValue) BigIntValue(com.scalar.db.io.BigIntValue) BigIntValue(com.scalar.db.io.BigIntValue) BlobValue(com.scalar.db.io.BlobValue) Nullable(javax.annotation.Nullable)

Example 23 with IntValue

use of com.scalar.db.io.IntValue in project scalardb by scalar-labs.

the class DistributedStorageIntegrationTestBase method put_PutWithIfGivenWhenSuchRecordExists_ShouldUpdateRecord.

@Test
public void put_PutWithIfGivenWhenSuchRecordExists_ShouldUpdateRecord() throws ExecutionException {
    // Arrange
    int pKey = 0;
    int cKey = 0;
    List<Put> puts = preparePuts();
    Get get = prepareGet(pKey, cKey);
    // Act Assert
    storage.put(puts.get(0));
    puts.get(0).withCondition(new PutIf(new ConditionalExpression(COL_NAME3, new IntValue(pKey + cKey), ConditionalExpression.Operator.EQ)));
    puts.get(0).withValue(COL_NAME3, Integer.MAX_VALUE);
    assertThatCode(() -> storage.put(puts.get(0))).doesNotThrowAnyException();
    // Assert
    Optional<Result> actual = storage.get(get);
    assertThat(actual.isPresent()).isTrue();
    Result result = actual.get();
    assertThat(result.getValue(COL_NAME1)).isEqualTo(Optional.of(new IntValue(COL_NAME1, pKey)));
    assertThat(result.getValue(COL_NAME4)).isEqualTo(Optional.of(new IntValue(COL_NAME4, cKey)));
    assertThat(result.getValue(COL_NAME3)).isEqualTo(Optional.of(new IntValue(COL_NAME3, Integer.MAX_VALUE)));
}
Also used : IntValue(com.scalar.db.io.IntValue) ExpectedResult(com.scalar.db.util.TestUtils.ExpectedResult) Test(org.junit.jupiter.api.Test)

Example 24 with IntValue

use of com.scalar.db.io.IntValue in project scalardb by scalar-labs.

the class DistributedStorageColumnValueIntegrationTestBase method put_WithRandomValues_ShouldPutCorrectly.

@Test
public void put_WithRandomValues_ShouldPutCorrectly() throws ExecutionException {
    RANDOM.setSeed(seed);
    for (int i = 0; i < ATTEMPT_COUNT; i++) {
        // Arrange
        IntValue partitionKeyValue = (IntValue) getRandomValue(RANDOM, PARTITION_KEY, DataType.INT);
        BooleanValue col1Value = (BooleanValue) getRandomValue(RANDOM, COL_NAME1, DataType.BOOLEAN);
        IntValue col2Value = (IntValue) getRandomValue(RANDOM, COL_NAME2, DataType.INT);
        BigIntValue col3Value = (BigIntValue) getRandomValue(RANDOM, COL_NAME3, DataType.BIGINT);
        FloatValue col4Value = (FloatValue) getRandomValue(RANDOM, COL_NAME4, DataType.FLOAT);
        DoubleValue col5Value = (DoubleValue) getRandomValue(RANDOM, COL_NAME5, DataType.DOUBLE);
        TextValue col6Value = (TextValue) getRandomValue(RANDOM, COL_NAME6, DataType.TEXT);
        BlobValue col7Value = (BlobValue) getRandomValue(RANDOM, COL_NAME7, DataType.BLOB);
        Put put = new Put(new Key(partitionKeyValue)).withValue(col1Value).withValue(col2Value).withValue(col3Value).withValue(col4Value).withValue(col5Value).withValue(col6Value).withValue(col7Value).forNamespace(namespace).forTable(TABLE);
        // Act
        storage.put(put);
        // Assert
        Optional<Result> actual = storage.get(new Get(new Key(partitionKeyValue)).forNamespace(namespace).forTable(TABLE));
        assertThat(actual).isPresent();
        assertThat(actual.get().getValue(PARTITION_KEY).isPresent()).isTrue();
        assertThat(actual.get().getValue(PARTITION_KEY).get()).isEqualTo(partitionKeyValue);
        assertThat(actual.get().getValue(COL_NAME1).isPresent()).isTrue();
        assertThat(actual.get().getValue(COL_NAME1).get()).isEqualTo(col1Value);
        assertThat(actual.get().getValue(COL_NAME2).isPresent()).isTrue();
        assertThat(actual.get().getValue(COL_NAME2).get()).isEqualTo(col2Value);
        assertThat(actual.get().getValue(COL_NAME3).isPresent()).isTrue();
        assertThat(actual.get().getValue(COL_NAME3).get()).isEqualTo(col3Value);
        assertThat(actual.get().getValue(COL_NAME4).isPresent()).isTrue();
        assertThat(actual.get().getValue(COL_NAME4).get()).isEqualTo(col4Value);
        assertThat(actual.get().getValue(COL_NAME5).isPresent()).isTrue();
        assertThat(actual.get().getValue(COL_NAME5).get()).isEqualTo(col5Value);
        assertThat(actual.get().getValue(COL_NAME6).isPresent()).isTrue();
        assertThat(actual.get().getValue(COL_NAME6).get()).isEqualTo(col6Value);
        assertThat(actual.get().getValue(COL_NAME7).isPresent()).isTrue();
        assertThat(actual.get().getValue(COL_NAME7).get()).isEqualTo(col7Value);
        assertThat(actual.get().getContainedColumnNames()).isEqualTo(new HashSet<>(Arrays.asList(PARTITION_KEY, COL_NAME1, COL_NAME2, COL_NAME3, COL_NAME4, COL_NAME5, COL_NAME6, COL_NAME7)));
        assertThat(actual.get().contains(PARTITION_KEY)).isTrue();
        assertThat(actual.get().isNull(PARTITION_KEY)).isFalse();
        assertThat(actual.get().getInt(PARTITION_KEY)).isEqualTo(partitionKeyValue.get());
        assertThat(actual.get().getAsObject(PARTITION_KEY)).isEqualTo(partitionKeyValue.get());
        assertThat(actual.get().contains(COL_NAME1)).isTrue();
        assertThat(actual.get().isNull(COL_NAME1)).isFalse();
        assertThat(actual.get().getBoolean(COL_NAME1)).isEqualTo(col1Value.get());
        assertThat(actual.get().getAsObject(COL_NAME1)).isEqualTo(col1Value.get());
        assertThat(actual.get().contains(COL_NAME2)).isTrue();
        assertThat(actual.get().isNull(COL_NAME2)).isFalse();
        assertThat(actual.get().getInt(COL_NAME2)).isEqualTo(col2Value.get());
        assertThat(actual.get().getAsObject(COL_NAME2)).isEqualTo(col2Value.get());
        assertThat(actual.get().contains(COL_NAME3)).isTrue();
        assertThat(actual.get().isNull(COL_NAME3)).isFalse();
        assertThat(actual.get().getBigInt(COL_NAME3)).isEqualTo(col3Value.get());
        assertThat(actual.get().getAsObject(COL_NAME3)).isEqualTo(col3Value.get());
        assertThat(actual.get().contains(COL_NAME4)).isTrue();
        assertThat(actual.get().isNull(COL_NAME4)).isFalse();
        assertThat(actual.get().getFloat(COL_NAME4)).isEqualTo(col4Value.get());
        assertThat(actual.get().getAsObject(COL_NAME4)).isEqualTo(col4Value.get());
        assertThat(actual.get().contains(COL_NAME5)).isTrue();
        assertThat(actual.get().isNull(COL_NAME5)).isFalse();
        assertThat(actual.get().getDouble(COL_NAME5)).isEqualTo(col5Value.get());
        assertThat(actual.get().getAsObject(COL_NAME5)).isEqualTo(col5Value.get());
        assertThat(actual.get().contains(COL_NAME6)).isTrue();
        assertThat(actual.get().isNull(COL_NAME6)).isFalse();
        assertThat(actual.get().getText(COL_NAME6)).isEqualTo(col6Value.get().get());
        assertThat(actual.get().getAsObject(COL_NAME6)).isEqualTo(col6Value.get().get());
        assertThat(actual.get().contains(COL_NAME7)).isTrue();
        assertThat(actual.get().isNull(COL_NAME7)).isFalse();
        assertThat(actual.get().getBlob(COL_NAME7)).isEqualTo(ByteBuffer.wrap(col7Value.get().get()));
        assertThat(actual.get().getBlobAsByteBuffer(COL_NAME7)).isEqualTo(ByteBuffer.wrap(col7Value.get().get()));
        assertThat(actual.get().getBlobAsBytes(COL_NAME7)).isEqualTo(col7Value.get().get());
        assertThat(actual.get().getAsObject(COL_NAME7)).isEqualTo(ByteBuffer.wrap(col7Value.get().get()));
    }
}
Also used : BlobValue(com.scalar.db.io.BlobValue) DoubleValue(com.scalar.db.io.DoubleValue) TextValue(com.scalar.db.io.TextValue) BooleanValue(com.scalar.db.io.BooleanValue) FloatValue(com.scalar.db.io.FloatValue) IntValue(com.scalar.db.io.IntValue) BigIntValue(com.scalar.db.io.BigIntValue) Key(com.scalar.db.io.Key) BigIntValue(com.scalar.db.io.BigIntValue) Test(org.junit.jupiter.api.Test)

Example 25 with IntValue

use of com.scalar.db.io.IntValue in project scalardb by scalar-labs.

the class DistributedStorageColumnValueIntegrationTestBase method put_WithMaxValues_ShouldPutCorrectly.

@Test
public void put_WithMaxValues_ShouldPutCorrectly() throws ExecutionException {
    // Arrange
    IntValue partitionKeyValue = (IntValue) getMaxValue(PARTITION_KEY, DataType.INT);
    BooleanValue col1Value = (BooleanValue) getMaxValue(COL_NAME1, DataType.BOOLEAN);
    IntValue col2Value = (IntValue) getMaxValue(COL_NAME2, DataType.INT);
    BigIntValue col3Value = (BigIntValue) getMaxValue(COL_NAME3, DataType.BIGINT);
    FloatValue col4Value = (FloatValue) getMaxValue(COL_NAME4, DataType.FLOAT);
    DoubleValue col5Value = (DoubleValue) getMaxValue(COL_NAME5, DataType.DOUBLE);
    TextValue col6Value = (TextValue) getMaxValue(COL_NAME6, DataType.TEXT);
    BlobValue col7Value = (BlobValue) getMaxValue(COL_NAME7, DataType.BLOB);
    Put put = new Put(new Key(partitionKeyValue)).withValue(col1Value).withValue(col2Value).withValue(col3Value).withValue(col4Value).withValue(col5Value).withValue(col6Value).withValue(col7Value).forNamespace(namespace).forTable(TABLE);
    // Act
    storage.put(put);
    // Assert
    Optional<Result> actual = storage.get(new Get(new Key(partitionKeyValue)).forNamespace(namespace).forTable(TABLE));
    assertThat(actual).isPresent();
    assertThat(actual.get().getValue(PARTITION_KEY).isPresent()).isTrue();
    assertThat(actual.get().getValue(PARTITION_KEY).get()).isEqualTo(partitionKeyValue);
    assertThat(actual.get().getValue(COL_NAME1).isPresent()).isTrue();
    assertThat(actual.get().getValue(COL_NAME1).get()).isEqualTo(col1Value);
    assertThat(actual.get().getValue(COL_NAME2).isPresent()).isTrue();
    assertThat(actual.get().getValue(COL_NAME2).get()).isEqualTo(col2Value);
    assertThat(actual.get().getValue(COL_NAME3).isPresent()).isTrue();
    assertThat(actual.get().getValue(COL_NAME3).get()).isEqualTo(col3Value);
    assertThat(actual.get().getValue(COL_NAME4).isPresent()).isTrue();
    assertThat(actual.get().getValue(COL_NAME4).get()).isEqualTo(col4Value);
    assertThat(actual.get().getValue(COL_NAME5).isPresent()).isTrue();
    assertThat(actual.get().getValue(COL_NAME5).get()).isEqualTo(col5Value);
    assertThat(actual.get().getValue(COL_NAME6).isPresent()).isTrue();
    assertThat(actual.get().getValue(COL_NAME6).get()).isEqualTo(col6Value);
    assertThat(actual.get().getValue(COL_NAME7).isPresent()).isTrue();
    assertThat(actual.get().getValue(COL_NAME7).get()).isEqualTo(col7Value);
    assertThat(actual.get().getContainedColumnNames()).isEqualTo(new HashSet<>(Arrays.asList(PARTITION_KEY, COL_NAME1, COL_NAME2, COL_NAME3, COL_NAME4, COL_NAME5, COL_NAME6, COL_NAME7)));
    assertThat(actual.get().contains(PARTITION_KEY)).isTrue();
    assertThat(actual.get().isNull(PARTITION_KEY)).isFalse();
    assertThat(actual.get().getInt(PARTITION_KEY)).isEqualTo(partitionKeyValue.get());
    assertThat(actual.get().getAsObject(PARTITION_KEY)).isEqualTo(partitionKeyValue.get());
    assertThat(actual.get().contains(COL_NAME1)).isTrue();
    assertThat(actual.get().isNull(COL_NAME1)).isFalse();
    assertThat(actual.get().getBoolean(COL_NAME1)).isEqualTo(col1Value.get());
    assertThat(actual.get().getAsObject(COL_NAME1)).isEqualTo(col1Value.get());
    assertThat(actual.get().contains(COL_NAME2)).isTrue();
    assertThat(actual.get().isNull(COL_NAME2)).isFalse();
    assertThat(actual.get().getInt(COL_NAME2)).isEqualTo(col2Value.get());
    assertThat(actual.get().getAsObject(COL_NAME2)).isEqualTo(col2Value.get());
    assertThat(actual.get().contains(COL_NAME3)).isTrue();
    assertThat(actual.get().isNull(COL_NAME3)).isFalse();
    assertThat(actual.get().getBigInt(COL_NAME3)).isEqualTo(col3Value.get());
    assertThat(actual.get().getAsObject(COL_NAME3)).isEqualTo(col3Value.get());
    assertThat(actual.get().contains(COL_NAME4)).isTrue();
    assertThat(actual.get().isNull(COL_NAME4)).isFalse();
    assertThat(actual.get().getFloat(COL_NAME4)).isEqualTo(col4Value.get());
    assertThat(actual.get().getAsObject(COL_NAME4)).isEqualTo(col4Value.get());
    assertThat(actual.get().contains(COL_NAME5)).isTrue();
    assertThat(actual.get().isNull(COL_NAME5)).isFalse();
    assertThat(actual.get().getDouble(COL_NAME5)).isEqualTo(col5Value.get());
    assertThat(actual.get().getAsObject(COL_NAME5)).isEqualTo(col5Value.get());
    assertThat(actual.get().contains(COL_NAME6)).isTrue();
    assertThat(actual.get().isNull(COL_NAME6)).isFalse();
    assertThat(actual.get().getText(COL_NAME6)).isEqualTo(col6Value.get().get());
    assertThat(actual.get().getAsObject(COL_NAME6)).isEqualTo(col6Value.get().get());
    assertThat(actual.get().contains(COL_NAME7)).isTrue();
    assertThat(actual.get().isNull(COL_NAME7)).isFalse();
    assertThat(actual.get().getBlob(COL_NAME7)).isEqualTo(ByteBuffer.wrap(col7Value.get().get()));
    assertThat(actual.get().getBlobAsByteBuffer(COL_NAME7)).isEqualTo(ByteBuffer.wrap(col7Value.get().get()));
    assertThat(actual.get().getBlobAsBytes(COL_NAME7)).isEqualTo(col7Value.get().get());
    assertThat(actual.get().getAsObject(COL_NAME7)).isEqualTo(ByteBuffer.wrap(col7Value.get().get()));
}
Also used : BlobValue(com.scalar.db.io.BlobValue) DoubleValue(com.scalar.db.io.DoubleValue) TextValue(com.scalar.db.io.TextValue) BooleanValue(com.scalar.db.io.BooleanValue) FloatValue(com.scalar.db.io.FloatValue) IntValue(com.scalar.db.io.IntValue) BigIntValue(com.scalar.db.io.BigIntValue) Key(com.scalar.db.io.Key) BigIntValue(com.scalar.db.io.BigIntValue) Test(org.junit.jupiter.api.Test)

Aggregations

IntValue (com.scalar.db.io.IntValue)108 Test (org.junit.jupiter.api.Test)65 TextValue (com.scalar.db.io.TextValue)63 Key (com.scalar.db.io.Key)62 Put (com.scalar.db.api.Put)55 BooleanValue (com.scalar.db.io.BooleanValue)48 DoubleValue (com.scalar.db.io.DoubleValue)38 Result (com.scalar.db.api.Result)35 Test (org.junit.Test)33 Get (com.scalar.db.api.Get)29 Value (com.scalar.db.io.Value)26 BigIntValue (com.scalar.db.io.BigIntValue)23 BlobValue (com.scalar.db.io.BlobValue)20 FloatValue (com.scalar.db.io.FloatValue)19 ExpectedResult (com.scalar.db.util.TestUtils.ExpectedResult)15 ConditionalExpression (com.scalar.db.api.ConditionalExpression)13 MutationCondition (com.scalar.db.api.MutationCondition)12 PutIf (com.scalar.db.api.PutIf)8 TransactionState (com.scalar.db.api.TransactionState)8 DeleteIf (com.scalar.db.api.DeleteIf)6