RavenDB EmbeddableDocumentStore中可能存在的错误

时间:2013-08-02 11:46:46

标签: linq ravendb

我们正在升级到RavenDB 2.5,并遇到了一个特殊的情况。 我们的一个单元测试突然失败,并且没有明显的原因。

以下是一些重现问题的简单代码:

class Foo
{
    public Guid Id { get; private set; }
    public DateTime? ExpirationTime { get; set; }

    public Foo()
    {
        Id = Guid.NewGuid();
        ExpirationTime = null;
    }
}

var documentStore = new EmbeddableDocumentStore
    {
        RunInMemory = true,
        Conventions = { DefaultQueryingConsistency = ConsistencyOptions.QueryYourWrites }
    };
documentStore.Initialize();

using (var session = documentStore.OpenSession())
{
    session.Store(new Foo());
    session.Store(new Foo());
    session.SaveChanges();
}

所以,现在我们在数据库中有两个文件,都有ExpirationTime = null。 这是在查询数据库中这些文档时发生的情况:

using (var session = documentStore.OpenSession())
{
    var bar = session.Query<Foo>().Where(foo => foo.ExpirationTime == null).ToList();
    Console.WriteLine("1. Number of documents: {0}", bar.Count);

    bar = session.Query<Foo>().Where(foo => foo.ExpirationTime == null || 
                                     foo.ExpirationTime > DateTime.Now).ToList();
    Console.WriteLine("2. Number of documents: {0}", bar.Count);

    bar = session.Query<Foo>().Where(foo => foo.ExpirationTime == null | 
                                     foo.ExpirationTime > DateTime.Now).ToList();
    Console.WriteLine("3. Number of documents: {0}", bar.Count);        
}

这些查询的输出如下:

1. Number of documents: 2
2. Number of documents: 0
3. Number of documents: 2

这对我来说似乎不正确......我希望也是2号。给予2。

我对RavenDB服务器运行了相同的查询,并得到了预期的结果,所以看起来这是EmbeddableDocumentStore的一个问题。

在测试时,我在其他情况下使用逻辑或运算符时也发现了一些奇怪的行为。有时使用foo.HasValue会得到与foo != null不同的结果,但这可能与同一问题有关。

有其他人遇到过这个问题吗?已知错误?

1 个答案:

答案 0 :(得分:3)

这是RavenDB中与空字段排序相关的错误。 修复了下一个版本