0

このテストケースは最初は合格しますが、次に失敗します。2回目の挿入メソッドの実行後に列の値が「value1」に更新されなかった理由がわかりません。

   [TestMethod]
    public void TestMethod()
    {

        client.set_keyspace(KEYSPACE);

        byte[] key = utf8Encoding.GetBytes("123456789");

        ColumnParent parent = new ColumnParent();
        parent.Column_family = "Users";

        Column column = new Column();
        column.Name = utf8Encoding.GetBytes("columnname1");
        column.Timestamp = DateTime.Now.Millisecond;
        column.Value = utf8Encoding.GetBytes("value1");

        // insert
        client.insert(key, parent, column, ConsistencyLevel.ONE);

        ColumnPath path = new ColumnPath();
        path.Column_family = "Users";
        path.Column = utf8Encoding.GetBytes("columnname1");

        // search
        ColumnOrSuperColumn returnedColumn = client.get(key, path, ConsistencyLevel.ONE);
        Assert.AreEqual("value1", utf8Encoding.GetString(returnedColumn.Column.Value));

        // update
        column.Timestamp = DateTime.Now.Millisecond;
        column.Value = utf8Encoding.GetBytes("value2");
        client.insert(key, parent, column, ConsistencyLevel.ONE);

        returnedColumn = client.get(key, path, ConsistencyLevel.ONE);
        Assert.AreEqual("value2", utf8Encoding.GetString(returnedColumn.Column.Value));
4

1 に答える 1

-1

コード内で2回続けて呼び出す場合は、タイムスタンプが増加していることを確認する必要があります。マイクロ秒の解像度を使用して、最後に返された時間を記憶し、次回が最後に返された時間以下になる場合は1を追加する関数を作成します。

ミリ秒の解像度のみを使用する場合、すべてのタイムスタンプはおそらく同じであるため、Cassandraはバイトの比較に戻り、value2が優先されます。

于 2013-03-27T05:27:55.703 に答える